Gérer plusieurs demandes d'annonces avec UserContext

La plupart des utilisations du SDK IMA ne nécessitent de gérer qu'une seule demande d'annonce à la fois. Cependant, certains cas limites, tels que le préchargement des données d'annonces avant que l'utilisateur ne sélectionne une vidéo, peuvent nécessiter plusieurs demandes simultanées. Les demandes d'annonces étant effectuées de manière asynchrone, il peut sembler intimidant de s'assurer que le bon gestionnaire d'annonces est associé au contexte approprié.

Pour simplifier la différenciation entre plusieurs gestionnaires d'annonces, le SDK IMA pour Android permet aux éditeurs de transmettre n'importe quelle valeur ou n'importe quel objet au champ UserRequestContext de n'importe quelle demande d'annonce. Cette valeur ou cet objet peuvent ensuite être récupérés dans le gestionnaire AdsManagerLoadedEvent, à l'aide de la méthode getUserRequestContext().

Exemple

...

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

...