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