การใช้งาน IMA SDK ส่วนใหญ่ต้องการการจัดการคำขอโฆษณาครั้งละ 1 รายการเท่านั้น อย่างไรก็ตาม การติดตั้งใช้งาน Edge Case บางอย่าง เช่น การโหลดข้อมูลโฆษณาไว้ล่วงหน้าก่อนที่ผู้ใช้จะเลือกวิดีโอ อาจต้องส่งคำขอพร้อมกันหลายรายการ เนื่องจากคำขอโฆษณาสร้างขึ้นแบบไม่พร้อมกัน การตรวจสอบว่า 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);
...