Mehrere Anzeigenanfragen verarbeiten

Plattform auswählen: HTML5 Android iOS tvOS

In den meisten Fällen muss mit dem IMA SDK nur eine Anzeigenanfrage gleichzeitig verwaltet werden. Bei einigen Sonderfällen, z. B. beim Vorabladen von Anzeigendaten, bevor der Nutzer ein Video auswählt, sind jedoch möglicherweise mehrere gleichzeitige Anfragen erforderlich. Da Anzeigenanfragen asynchron gestellt werden, kann es schwierig sein, den richtigen Ad Manager dem richtigen Kontext zuzuordnen.

Um die Unterscheidung zwischen mehreren Ad Managern zu vereinfachen, können Publisher mit dem IMA SDK für tvOS einen beliebigen Wert oder ein beliebiges Objekt an das UserContext Feld einer beliebigen Anzeigenanfrage übergeben. Dieser Wert oder dieses Objekt kann dann in der Delegatenfunktion AdsLoader:AdsLoadedWithData über das Attribut userContext des Objekts IMAAdsLoadedData abgerufen werden.

Beispiel

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

...