لا تتطلّب معظم استخدامات "حزمة تطوير البرامج لإعلانات الوسائط التفاعلية" سوى إدارة طلب عرض إعلان واحد في كل مرة. ومع ذلك، قد تتطلّب بعض حالات الاستخدام، مثل التحميل المُسبَق لبيانات الإعلان قبل أن يختار المستخدم فيديو، تقديم طلبات متزامنة متعددة. بما أنّ طلبات الإعلانات يتم إجراؤها بشكل غير متزامن، قد يبدو ضمان ربط "مدير الإعلانات" المناسب بالسياق الصحيح مهمة شاقة.
لتبسيط عملية التمييز بين عدة مدراء إعلانات، تتيح "حزمة تطوير البرامج للإعلانات التفاعلية" لنظام التشغيل 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);
...