بیشتر کاربردهای IMA SDK فقط نیاز به مدیریت یک درخواست تبلیغ در هر زمان دارند. با این حال، برخی از پیادهسازیهای موردی، مانند پیشبارگذاری دادههای تبلیغ قبل از انتخاب ویدیو توسط کاربر، ممکن است نیاز به ایجاد چندین درخواست همزمان داشته باشند. از آنجایی که درخواستهای تبلیغ به صورت غیرهمزمان انجام میشوند، اطمینان از اینکه مدیر تبلیغ مناسب با زمینه صحیح مرتبط است، میتواند یک کار دلهرهآور به نظر برسد.
برای سادهسازی فرآیند تمایز قائل شدن بین چندین مدیر تبلیغات، IMA SDK برای اندروید به ناشران اجازه میدهد تا هر مقدار یا شیء را به فیلد UserRequestContext هر درخواست تبلیغاتی ارسال کنند. این مقدار یا شیء سپس میتواند با استفاده از متد getUserRequestContext() در کنترلکننده AdsManagerLoadedEvent بازیابی شود.
مثال
...
adsLoader = sdkFactory.createAdsLoader(context, imaSdkSettings, adDisplayContainer);
Map<String, String> userContextA = new HashMap<String, String>();
Map<String, String> userContextB = new HashMap<String, String>();
userContextA.put("id", "Request A");
userContextB.put("id", "Request B");
userContextA.put("element", "videoElementA");
userContextB.put("element", "videoElementB");
adRequestA.setUserRequestContext(userContextA);
adRequestB.setUserRequestContext(userContextB);
adsLoader.addAdsLoadedListener(
new AdsLoader.AdsLoadedListener() {
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent adsManagerLoadedEvent) {
Map<String, String> context = adsManagerLoadedEvent.getUserRequestContext();
adsManager = adsManagerLoadedEvent.getAdsManager();
Log.i("ImaExample", "Successfully loaded ID: " + context.get("id"));
}
});
adsLoader.addAdErrorListener(
new AdErrorEvent.AdErrorListener() {
@Override
public void onAdError(AdErrorEvent adErrorEvent) {
Map<String, String> context = adErrorEvent.getUserRequestContext();
Log.i("ImaExample", "Error with AdRequest. ID: " + context.get("id"));
Log.i("ImaExample", "Ad Error: " + adErrorEvent.getError().getMessage());
}
});
adsLoader.requestAds(adRequestA);
adsLoader.requestAds(adRequestB);
...