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