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

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

כדי לפשט את תהליך ההבחנה בין כמה מנהלי מודעות, IMA SDK ל-Android מאפשר לבעלי תוכן דיגיטלי להעביר כל ערך או אובייקט לשדה UserRequestContext של כל בקשה להצגת מודעה. לאחר מכן אפשר לאחזר את הערך או האובייקט הזה במטפל 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);

...