Processar várias solicitações de anúncios

Selecione a plataforma: HTML5 Android iOS tvOS

A maioria dos usos do SDK do IMA exige apenas o gerenciamento de uma solicitação de anúncio por vez. No entanto, algumas implementações de casos extremos, como o pré-carregamento de dados de anúncios antes que o usuário selecione um vídeo, podem exigir várias solicitações simultâneas. Como as solicitações de anúncio são feitas de forma assíncrona, garantir que o Ad Manager adequado esteja associado ao contexto correto pode parecer uma tarefa difícil.

Para simplificar o processo de diferenciação de vários gerenciadores de anúncios, o SDK do IMA para Android permite que os publishers transmitam qualquer valor ou objeto ao campo UserRequestContext de qualquer solicitação de anúncio. Esse valor ou objeto pode ser recuperado no manipulador AdsManagerLoadedEvent usando o método getUserRequestContext().

Exemplo

...

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

...