اکثر موارد استفاده از کیت توسعه نرمافزار IMA فقط به مدیریت یک درخواست آگهی در هر زمان نیاز دارند. بااینحال، برخیاز پیادهسازیهای موارد حاشیهای، مانند پیشبارگیری دادههای آگهی قبلاز اینکه کاربر ویدیویی را انتخاب کند، ممکن است نیاز به ایجاد چندین درخواست همزمان داشته باشد. ازآنجاییکه درخواستهای آگهی بهصورت ناهمگام انجام میشوند، اطمینان از اینکه مدیر آگهی مناسب با زمینه صحیح مرتبط است، میتواند کار دلهرهآوری بهنظر برسد.
برای ساده کردن فرایند متمایز کردن چندین مدیر آگهی، IMA SDK برای Android به ناشران اجازه میدهد هر مقدار یا شیء را به فیلد UserRequestContext هر درخواست آگهی ارسال کنند. سپس این مقدار یا شیء را میتوان در کنترلکننده AdsManagerLoadedEvent بااستفاده از روش getUserRequestContext() بازیابی کرد.
مثال
...
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);
...