معالجة طلبات الإعلانات المتعددة باستخدام UserContext

لا تتطلّب معظم استخدامات حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (IMA SDK) سوى إدارة طلب إعلان واحد في كل مرة. ومع ذلك، قد تتطلّب بعض عمليات التنفيذ في الحالات القصوى، مثل التحميل المُسبَق لبيانات الإعلانات قبل اختيار المستخدم لفيديو، تقديم طلبات متعدّدة متزامنة. بما أنّ طلبات الإعلانات يتم إجراؤها بشكل غير متزامن، قد يبدو ضمان ربط مدير الإعلانات المناسب بالسياق الصحيح مهمة شاقّة.

لتبسيط عملية التمييز بين مدراء الإعلانات المتعدّدين، تسمح حزمة تطوير البرامج (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);

...