رسیدگی به درخواست های تبلیغاتی متعدد با UserContext

اکثر موارد استفاده از IMA SDK فقط نیاز به مدیریت یک درخواست آگهی در هر زمان دارد. با این حال، برخی از پیاده‌سازی‌های حاشیه‌ای، مانند بارگذاری پیش‌بار داده‌های آگهی قبل از انتخاب ویدیو توسط کاربر، ممکن است نیاز به چندین درخواست همزمان داشته باشند. از آنجایی که درخواست های تبلیغاتی به صورت ناهمزمان انجام می شود، اطمینان از مرتبط بودن مدیر تبلیغات مناسب با زمینه صحیح می تواند کاری دلهره آور به نظر برسد.

برای ساده‌سازی فرآیند تمایز چند مدیر تبلیغات، IMA SDK برای Android به ناشران اجازه می‌دهد تا هر مقدار یا شیئی را به قسمت UserRequestContext هر درخواست تبلیغاتی منتقل کنند. سپس این مقدار یا شی را می توان با استفاده از متد ()getUserRequestContext در کنترلر AdsManagerLoadedEvent بازیابی کرد.

مثال

...

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);

...