טיפול בבקשות מרובות למודעות באמצעות UserContext

רוב השימושים ב-IMA SDK מחייבים ניהול של בקשה אחת למודעה בלבד בכל פעם. עם זאת, הטמעות מסוימות של מקרי קצה, כמו טעינה מראש של נתוני המודעה לפני שהמשתמש בוחר בסרטון, עשויות לחייב שליחה של מספר בקשות בו-זמנית. מכיוון שבקשות להצגת מודעות נשלחות באופן אסינכרוני, הוספה של מנהל המודעות המתאים להקשר הנכון יכולה להיראות משימה מרתיעה.

כדי לפשט את תהליך ההבחנה בין כמה מנהלי מודעות, IMA SDK ל-Android מאפשר לבעלי תוכן דיגיטלי להעביר כל ערך או אובייקט לשדה UserRequestContext של כל בקשה להצגת מודעה. לאחר מכן ניתן לאחזר את הערך או האובייקט הזה ב-handler של AdsManagerLoadedEvent, באמצעות השיטה getUserRequestContext().

דוגמה

...

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

...