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