IMA SDK für die dynamische Anzeigenbereitstellung einrichten

Mit den IMA SDKs lassen sich Multimedia-Anzeigen ganz einfach in Ihre Websites und Apps einbinden. Mit IMA SDKs können Anzeigen von jedem VAST-konformen Ad-Server angefordert und die Anzeigenwiedergabe in Ihren Apps verwaltet werden. Mit IMA DAI SDKs senden Apps eine Streamanfrage für Anzeigen- und Contentvideos – entweder VOD- oder Liveinhalte. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie das Umschalten zwischen Anzeigen- und Inhaltsvideo in Ihrer App nicht verwalten müssen.

Wählen Sie die DAI-Lösung aus, die Sie interessiert

Pod-Auslieferung mit dynamischer Anzeigenbereitstellung

In dieser Anleitung wird gezeigt, wie Sie einen Livestream oder VOD-Stream mit Pod-Auslieferung mit dynamischer Anzeigenbereitstellung mit dem IMA DAI SDK für tvOS in einem Videoplayer wiedergeben. Wenn Sie sich eine abgeschlossene Beispielintegration ansehen oder ihr folgen möchten, laden Sie die Beispiel-App für die Pod-Auslieferung herunter (Obj-C oder Swift).

Pod-Auslieferung mit dynamischer Anzeigenbereitstellung – Übersicht

Die Implementierung der Pod-Auslieferung mit dem IMA DAI SDK für tvOS umfasst zwei Hauptkomponenten:

  • StreamRequest: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss entweder mit IMAPodStreamRequest oder IMAPodVODStreamRequest erstellt werden, um die Pod-Auslieferung zu aktivieren. Für beide Methoden sind ein Network Code und für IMAPodStreamRequest auch ein Custom Asset Key erforderlich. Ein API-Schlüssel ist optional.

  • IMAStreamManager: Ein Objekt, das die Kommunikation zwischen dem Videostream und dem IMA DAI SDK übernimmt, z. B. das Senden von Tracking-Pings und das Weiterleiten von Streamereignissen an den Publisher.

Vorbereitung

Für den Start ist Folgendes erforderlich:

  • Xcode 13 oder höher
  • CocoaPods (bevorzugt), Swift Package Manager oder eine heruntergeladene Kopie des IMA DAI SDK für tvOS.
  • Eine tvOS-App, die bereits mit dem IMA DAI SDK eingerichtet ist, um Videostreams mit DAI-Anzeigen abzuspielen. Wenn Sie noch keine solche App haben, empfehlen wir, das tvOS DAI BasicExample als Ausgangspunkt zu verwenden. Das BasicExample enthält die in dieser Anleitung referenzierte Codebasis. Weitere Informationen zur Implementierung des IMA DAI SDK finden Sie in der Kurzanleitung.

Variablen für die Pod-Auslieferung einrichten

Alle Änderungen, die für die Pod-Bereitstellung erforderlich sind, werden in ViewController.swift in Swift oder ViewController.m in Objective-C vorgenommen. In den Code-Snippets in diesem Leitfaden wird standardmäßig die Sprache Swift verwendet. Im ersten Schritt müssen Sie die konstanten Variablen aktualisieren.

Hier sind die Konstanten für Anfragen für Ad-Pod-Streams, die hinzugefügt werden müssen:

  • STREAM_URL (Nur für Livestreams): Die vom Manifest-Manipulator oder Drittanbieterpartner bereitgestellte Videostream-URL für die Pod-Auslieferung. Sie sollten die vom IMA DAI SDK bereitgestellte Stream-ID einfügen müssen, bevor Sie eine Anfrage senden. In diesem Fall enthält die Stream-URL einen Platzhalter, "[[STREAMID]]", der vor dem Senden einer Anfrage durch die Stream-ID ersetzt wird.
  • NETWORK_CODE: Der Netzwerkcode für Ihr Ad Manager 360-Konto.
  • CUSTOM_ASSET_KEY (Nur für Livestreams verwendet): Der benutzerdefinierte Assetschlüssel, der Ihr Pod-Serving-Ereignis in Ad Manager 360 identifiziert. Das kann von Ihrer Manifestbearbeitung oder einem Drittanbieter-Partner für die Pod-Auslieferung erstellt werden.
  • API_KEY (wird nur für Livestreams verwendet): Ein optionaler API-Schlüssel, der erforderlich sein kann, um eine Stream-ID aus dem IMA DAI SDK abzurufen.

Ändern Sie den Variablenabschnitt des Beispiels so:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl = ""
  static let networkCode = ""
  static let customAssetKey = ""
  static let APIKey = ""
  static let backupStreamURLString = ""

  var adsLoader: IMAAdsLoader?
  ...

Livestream- oder VOD-Pod-Stream-Anfrage erstellen

Bereitstellung von Livestream-Pods

Ändern Sie die requestStream-Methode, um eine Anfrage für einen Live-Pod-Stream zu erstellen, indem Sie IMAPodStreamRequest instanziieren.

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodStreamRequest(
      networkCode: self.networkCode,
      customAssetKey: self.customAssetKey,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

Pod-Auslieferung von VOD-Streams

Ändern Sie die Methode requestStream, um eine VOD-Pod-Stream-Anfrage zu erstellen, indem Sie IMAPodVODStreamRequest instanziieren.

  ...

  func requestStream() {
    guard let playerViewController = self.playerViewController else return
    guard let adContainerView = self.adContainerView else return
    guard let adsLoader = self.adsLoader else return

    self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
    adDisplayContainer = IMAAdDisplayContainer(
      adContainer: adContainerView, viewController: self)

    // Create a podserving stream request.
    request = IMAPodVODStreamRequest(
      networkCode: self.networkCode,
      adDisplayContainer: adDisplayContainer,
      videoDisplay: self.videoDisplay,
      userContext: nil)

    adsLoader.requestStream(with: request)
  }

  ...

Stream-URL bearbeiten und festlegen

Bereitstellung von Livestream-Pods

Ändern Sie die IMAAdsLoaderDelegate-Methoden und verwenden Sie streamManager.streamId, um die Stream-ID abzurufen. Fügen Sie dann die Stream-ID in das STREAM_URL ein und ersetzen Sie dabei "[[STREAMID]]". Nachdem diese Änderung vorgenommen wurde, kann die neue Stream-URL mit videoDisplay.loadStream() festgelegt werden.

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
    let loadedStreamUrl = URL(string:urlString)
    self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
    self.videoDisplay.play()
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

  ...

Pod-Auslieferung von VOD-Streams

Ändern Sie die IMAAdsLoaderDelegate-Methoden und verwenden Sie streamManager.streamId, um die Stream-ID abzurufen. Fordern Sie dann eine Stream-URL von Ihrem Video Technology Partner (VTP) an und rufen Sie IMAStreamManager.loadThirdPartyStream() auf, damit IMA die Stream-URL und alle von Ihrem TVP zurückgegebenen Untertitel lädt.

  ...

  // MARK: - IMAAdsLoaderDelegate
  func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
    let streamManager = adsLoadedData.streamManager
    let streamId = streamManager.streamId
    // 'vtpInterface' is a place holder for your own video technology partner
    // (VTP) API calls.
    let streamUrl = vtpInterface.requestStreamURL(streamID)
    self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
    streamManager.delegate = self
    streamManager.initialize(with: nil)
    self.streamManager = streamManager
  }

Assets für die dynamische Anzeigenbereitstellung mit IMA bereinigen

Wenn Sie Anzeigen in einem Stream mit Pod-Bereitstellung mit dem IMA DAI SDK erfolgreich angefordert und präsentiert haben, empfehlen wir, alle Ressourcen zu bereinigen, nachdem die Pod-Bereitstellungssitzung abgeschlossen ist. Rufen Sie IMAStreamManager.destroy() auf, um die Streamwiedergabe zu beenden, das gesamte Anzeigen-Tracking zu beenden und alle geladenen Stream-Assets freizugeben.

Weitere Beispiele für die Verwendung des tvOS SDK finden Sie in den Beispielen auf GitHub.