Gestione di più richieste di annunci con UserContext

La maggior parte degli utilizzi dell'SDK IMA richiede la gestione di una sola richiesta di annunci alla volta. Tuttavia, alcune implementazioni di casi limite, come il precaricamento dei dati pubblicitari prima che l'utente selezioni un video, potrebbero richiedere l'invio di più richieste in parallelo. Poiché le richieste di annunci vengono effettuate in modo asincrono, assicurarsi che l'ad manager corretto sia associato al contesto corretto può sembrare un'impresa ardua.

Per semplificare la differenziazione di più gestori di annunci, l'SDK IMA per Android consente ai publisher di trasferire qualsiasi valore o oggetto al campo UserRequestContext di qualsiasi richiesta di annuncio. Questo valore o oggetto può essere recuperato nell'handler AdsManagerLoadedEvent utilizzando il metodo getUserRequestContext().

Esempio

...

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

...