การจัดการคําขอโฆษณาหลายรายการด้วย UserContext

การใช้งาน IMA SDK ส่วนใหญ่ต้องการการจัดการคำขอโฆษณาครั้งละ 1 รายการเท่านั้น อย่างไรก็ตาม การใช้งานบางกรณี เช่น การโหลดข้อมูลโฆษณาล่วงหน้าก่อนที่ผู้ใช้จะเลือกวิดีโอ อาจต้องมีการส่งคำขอหลายรายการพร้อมกัน เนื่องจากคำขอโฆษณาเกิดขึ้นแบบไม่พร้อมกัน การตรวจสอบให้ Ad Manager ที่เหมาะสมเชื่อมโยงกับบริบทที่ถูกต้องจึงอาจดูเป็นงานที่ท้าทาย

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

...