Controla varias solicitudes de anuncios

Selecciona la plataforma: HTML5 Android iOS tvOS

La mayoría de los usos del SDK de IMA solo requieren administrar una solicitud de anuncio a la vez. Sin embargo, algunas implementaciones de casos extremos, como la precarga de datos de anuncios antes de que el usuario seleccione un video, pueden requerir que se realicen varias solicitudes simultáneas. Dado que las solicitudes de anuncios se realizan de forma asíncrona, garantizar que el administrador de anuncios adecuado esté asociado con el contexto correcto puede parecer una tarea desalentadora.

Para simplificar el proceso de diferenciación de varios administradores de anuncios, el SDK de IMA para Android permite que los publicadores pasen cualquier valor u objeto al campo UserRequestContext de cualquier solicitud de anuncio. Luego, este valor o este objeto se pueden recuperar en el controlador AdsManagerLoadedEvent con el método getUserRequestContext().

Ejemplo

...

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

...