Controla varias solicitudes de anuncios

Selecciona la plataforma: HTML5 Android iOS tvOS

La mayoría de los usos del SDK de IMA solo requieren administrar una solicitud de anuncio a la vez. Sin embargo, algunas implementaciones de casos extremos, como la precarga de datos de anuncios antes de que el usuario seleccione un video, pueden requerir que se realicen varias solicitudes simultáneas. Dado que las solicitudes de anuncios se realizan de forma asíncrona, garantizar que el administrador de anuncios adecuado esté asociado con el contexto correcto puede parecer una tarea desalentadora.

Para simplificar el proceso de diferenciación de varios administradores de anuncios, el SDK de IMA para tvOS permite que los publicadores pasen cualquier valor u objeto al campo UserContext de cualquier solicitud de anuncio. Luego, este valor o este objeto se pueden recuperar en la función de delegado AdsLoader:AdsLoadedWithData, a través del atributo userContext del objeto IMAAdsLoadedData.

Ejemplo

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

...