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