Обработка нескольких запросов объявлений с помощью UserContext

В большинстве случаев использование IMA SDK требует одновременного управления только одним запросом объявления. Однако в некоторых крайних реализациях, таких как предварительная загрузка рекламных данных до того, как пользователь выберет видео, может потребоваться выполнение нескольких одновременных запросов. Поскольку запросы объявлений выполняются асинхронно, обеспечение связи соответствующего менеджера рекламы с правильным контекстом может показаться сложной задачей.

Чтобы упростить процесс различения нескольких менеджеров рекламы, IMA 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);

...