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