Menangani beberapa permintaan iklan dengan UserContext

Sebagian besar penggunaan IMA SDK hanya memerlukan pengelolaan permintaan iklan satu per satu. Namun, beberapa implementasi kasus ekstrem, seperti melakukan pramuat data iklan sebelum pengguna memilih video, mungkin memerlukan pembuatan beberapa permintaan serentak. Karena permintaan iklan dibuat secara asinkron, memastikan Ad Manager yang tepat dikaitkan dengan konteks yang benar tampaknya menjadi tugas yang menantang.

Untuk menyederhanakan proses membedakan beberapa pengelola iklan, IMA SDK untuk tvOS memungkinkan penayang meneruskan nilai atau objek apa pun ke kolom UserContext dari permintaan iklan apa pun. Nilai atau objek ini kemudian dapat diambil dalam fungsi delegasi AdsLoader:AdsLoadedWithData, melalui atribut userContext objek IMAAdsLoadedData.

Contoh

...
  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)
}

...