การใช้งาน IMA SDK ส่วนใหญ่ต้องการการจัดการคำขอโฆษณาครั้งละ 1 รายการเท่านั้น อย่างไรก็ตาม การติดตั้งใช้งาน Edge Case บางอย่าง เช่น การโหลดข้อมูลโฆษณาไว้ล่วงหน้าก่อนที่ผู้ใช้จะเลือกวิดีโอ อาจต้องส่งคำขอพร้อมกันหลายรายการ เนื่องจากคำขอโฆษณาสร้างขึ้นแบบไม่พร้อมกัน การตรวจสอบว่า Ad Manager ที่เหมาะสมเชื่อมโยงกับบริบทที่ถูกต้องจึงอาจดูเหมือนเป็นงานที่ยาก
IMA SDK สําหรับ tvOS ช่วยให้ผู้เผยแพร่โฆษณาส่งค่าหรือออบเจ็กต์ไปยังช่อง UserContext ของคําขอโฆษณาได้ เพื่อลดความซับซ้อนของกระบวนการแยกความแตกต่างระหว่าง Ad Manager หลายรายการ โดยจะดึงค่าหรือออบเจ็กต์นี้ได้ในฟังก์ชันมอบสิทธิ์ 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)
}
...