Cómo manejar varias solicitudes de anuncios con UserContext

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 la realización de varias solicitudes simultáneas. Dado que las solicitudes de anuncios se realizan de forma asíncrona, asegurarse de que el administrador de anuncios adecuado esté asociado con el contexto correcto puede parecer una tarea abrumadora.

Para simplificar el proceso de diferenciación de varios administradores de anuncios, el SDK de IMA para Android permite a los publicadores pasar cualquier objeto o valor al campo UserRequestContext de cualquier solicitud de anuncio. Este objeto o valor se puede 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);

...