UserContext ile birden fazla reklam isteğini işleme

IMA SDK'nın çoğu kullanımı, aynı anda yalnızca tek bir reklam isteğinin yönetilmesini gerektirir. Ancak reklam verilerinin kullanıcı bir video seçmeden önce önceden yüklenmesi gibi bazı uç durum uygulamaları için birden fazla eşzamanlı istek yapılması gerekebilir. Reklam istekleri eşzamansız olarak yapıldığından, uygun reklam yöneticisinin doğru bağlamla ilişkilendirilmesini sağlamak göz korkutucu bir görev gibi görünebilir.

Birden çok reklam yöneticisini ayırt etme sürecini basitleştirmek için tvOS için IMA SDK, yayıncıların herhangi bir reklam isteğinin UserContext alanına herhangi bir değer veya nesneyi iletmesine olanak tanır. Bu değer veya nesne, daha sonra IMAAdsLoadedData nesnesinin userContext özelliği aracılığıyla AdsLoader:AdsLoadedWithData yetki işlevinde alınabilir.

Örnek

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

...