การจัดการคําขอโฆษณาหลายรายการด้วย UserContext

การใช้งาน IMA SDK ส่วนใหญ่ต้องการการจัดการคำขอโฆษณาครั้งละ 1 รายการเท่านั้น อย่างไรก็ตาม การใช้งานบางกรณี เช่น การโหลดข้อมูลโฆษณาล่วงหน้าก่อนที่ผู้ใช้จะเลือกวิดีโอ อาจต้องมีการส่งคำขอหลายรายการพร้อมกัน เนื่องจากคำขอโฆษณาเกิดขึ้นแบบไม่พร้อมกัน การตรวจสอบให้ Ad Manager ที่เหมาะสมเชื่อมโยงกับบริบทที่ถูกต้องจึงอาจดูเป็นงานที่ท้าทาย

เพื่อทำให้ขั้นตอนการแยกความแตกต่างระหว่างผู้จัดการโฆษณาหลายๆ รายการง่ายขึ้น 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)
}

...