اکثر موارد استفاده از کیت توسعه نرمافزار IMA فقط به مدیریت یک درخواست آگهی در هر زمان نیاز دارند. بااینحال، برخیاز پیادهسازیهای موارد حاشیهای، مانند پیشبارگیری دادههای آگهی قبلاز اینکه کاربر ویدیویی را انتخاب کند، ممکن است نیاز به ایجاد چندین درخواست همزمان داشته باشد. ازآنجاییکه درخواستهای آگهی بهصورت ناهمگام انجام میشوند، اطمینان از اینکه مدیر آگهی مناسب با زمینه صحیح مرتبط است، میتواند کار دلهرهآوری بهنظر برسد.
برای ساده کردن فرایند متمایز کردن چند مدیر آگهی، IMA SDK برای iOS به ناشران اجازه میدهد هر مقدار یا شیء را به فیلد UserContext هر درخواست آگهی ارسال کنند. سپس این مقدار یا شیء را میتوان در تابع نماینده AdsLoader:AdsLoadedWithData ازطریق مشخصه userContext شیء IMAAdsLoadedData بازیابی کرد.
مثال
...
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)
}
...