IMA SDK-এর বেশিরভাগ ব্যবহারের ক্ষেত্রে, একবারে শুধুমাত্র একটি বিজ্ঞাপনের অনুরোধ ম্যানেজ করতে হয়। তবে, কিছু এজ কেস প্রয়োগের ক্ষেত্রে, যেমন ব্যবহারকারী কোনও ভিডিও বেছে নেওয়ার আগে বিজ্ঞাপনের ডেটা প্রি-লোড করা, একাধিক সমকালীন অনুরোধ করার প্রয়োজন হতে পারে। বিজ্ঞাপনের অনুরোধ অ্যাসিঙ্ক্রোনাস পদ্ধতিতে করা হয় বলে, সঠিক বিজ্ঞাপন ম্যানেজারের সাথে সঠিক প্রসঙ্গ যুক্ত আছে কিনা তা নিশ্চিত করা কঠিন কাজ বলে মনে হতে পারে।
একাধিক বিজ্ঞাপন ম্যানেজারকে আলাদা করার প্রসেস সহজ করতে, Android-এর জন্য IMA SDK প্রকাশকদের যেকোনও বিজ্ঞাপনের অনুরোধের UserRequestContext ফিল্ডে যেকোনও ভ্যালু বা অবজেক্ট পাস করার অনুমতি দেয়। তারপরে getUserRequestContext() পদ্ধতি ব্যবহার করে AdsManagerLoadedEvent হ্যান্ডলার থেকে এই ভ্যালু বা অবজেক্ট রিট্রিভ করা যেতে পারে।
উদাহরণ
...
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);
...