Gestire più richieste di annunci

Seleziona la piattaforma: HTML5 Android iOS tvOS

La maggior parte degli utilizzi dell'SDK IMA richiede la gestione di una sola richiesta di annuncio alla volta. Tuttavia, alcune implementazioni di casi limite, come il precaricamento dei dati degli annunci prima che l'utente selezioni un video, potrebbero richiedere l'esecuzione di più richieste simultanee. Poiché le richieste di annuncio vengono effettuate in modo asincrono, assicurarsi che l'ad server corretto sia associato al contesto giusto può sembrare un compito arduo.

Per semplificare il processo di differenziazione di più ad manager, l'SDK IMA per tvOS consente ai publisher di trasmettere qualsiasi valore o oggetto al campo UserContext di qualsiasi richiesta di annuncio. Questo valore o oggetto può essere recuperato nella funzione delegata AdsLoader:AdsLoadedWithData tramite l'attributo userContext dell'oggetto IMAAdsLoadedData.

Esempio

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

...