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

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

لتبسيط عملية التمييز بين عدة مديري إعلانات، تتيح حزمة تطوير البرامج لإعلانات الوسائط التفاعلية لنظام التشغيل 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);

...