Mehrere Anzeigenanfragen mit UserContext verarbeiten

Bei den meisten Verwendungen des IMA SDKs muss jeweils nur eine Anzeigenanfrage verwaltet werden. Bei einigen Sonderfällen, z. B. beim Vorabladen von Anzeigendaten, bevor der Nutzer ein Video auswählt, sind jedoch möglicherweise mehrere gleichzeitige Anfragen erforderlich. Da Anzeigenanfragen asynchron gesendet werden, kann es schwierig sein, dafür zu sorgen, dass der richtige Ad Manager dem richtigen Kontext zugeordnet ist.

Um die Unterscheidung zwischen mehreren Ad Manager-Konten zu vereinfachen, können Publisher mit dem IMA SDK für Android beliebige Werte oder Objekte an das Feld UserRequestContext einer Anzeigenanfrage übergeben. Dieser Wert oder dieses Objekt kann dann im Handler AdsManagerLoadedEvent mit der Methode getUserRequestContext() abgerufen werden.

Beispiel

...

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

...