IMA SDK-এর বেশিরভাগ ব্যবহারে একবারে শুধুমাত্র একটি বিজ্ঞাপন অনুরোধ পরিচালনা করার প্রয়োজন হয়। তবে কিছু ব্যতিক্রমী ক্ষেত্রে, যেমন ব্যবহারকারী ভিডিও নির্বাচন করার আগে বিজ্ঞাপনের ডেটা প্রি-লোড করার জন্য, একই সাথে একাধিক অনুরোধ পাঠানোর প্রয়োজন হতে পারে। যেহেতু বিজ্ঞাপনের অনুরোধগুলো অ্যাসিঙ্ক্রোনাসভাবে করা হয়, তাই সঠিক কনটেক্সটের সাথে যথাযথ অ্যাড ম্যানেজার যুক্ত আছে কিনা তা নিশ্চিত করা একটি কঠিন কাজ বলে মনে হতে পারে।
একাধিক অ্যাড ম্যানেজারকে আলাদা করার প্রক্রিয়া সহজ করার জন্য, iOS-এর জন্য IMA SDK পাবলিশারদের যেকোনো অ্যাড রিকোয়েস্টের UserContext ফিল্ডে যেকোনো ভ্যালু বা অবজেক্ট পাস করার সুযোগ দেয়। এরপর এই ভ্যালু বা অবজেক্টটি AdsLoader:AdsLoadedWithData ডেলিগেট ফাংশনে, IMAAdsLoadedData অবজেক্টের userContext অ্যাট্রিবিউটের মাধ্যমে পুনরুদ্ধার করা যায়।
উদাহরণ
...
adsLoader = IMAAdsLoader(settings: nil)
adsLoader.delegate = self
let userContextA = {id: "Request A", element: videoElementA}
let userContextB = {id: "Request B", element: videoElementB}
let requestA = IMAAdsRequest(
adTagUrl: ViewController.AdTagURLString,
adDisplayContainer: adDisplayContainer,
contentPlayhead: contentPlayhead,
userContext: userContextA)
let requestB = IMAAdsRequest(
adTagUrl: ViewController.AdTagURLString,
adDisplayContainer: adDisplayContainer,
contentPlayhead: contentPlayhead,
userContext: userContextB)
adsLoader.requestAds(with: requestA)
adsLoader.requestAds(with: requestB)
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let userContext = adsLoadedData.userContext
print("Loaded ads for ID: " + userContext.id)
adsManager = adsLoadedData.adsManager
adsManager.initialize(with: nil)
}
func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) {
let userContext = adsLoadingErrorData.userContext
print("Error loading ads for ID: " + userContext.id)
}
...