Einführung in das IMA DAI SDK

Mit IMA SDKs können Sie Multimedia-Anzeigen ganz einfach in Ihre Websites und Apps einbinden. Mit IMA SDKs können Anzeigen von jedem VAST-kompatiblen Ad-Server angefordert und die Anzeigenwiedergabe in Ihren Apps verwaltet werden. Mit IMA DAI SDKs stellen Apps eine Streamanfrage für Anzeigen- und Contentvideos – entweder VOD oder Livecontent. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht zwischen Anzeigen- und Contentvideo wechseln müssen.

Wählen Sie die gewünschte Lösung für die dynamische Anzeigenbereitstellung aus.

Dynamische Anzeigenbereitstellung für die Pod-Auslieferung

In diesem Leitfaden wird erläutert, wie Sie mit dem IMA DAI SDK für tvOS einen Live- oder VOD-Stream mit Pod-Auslieferung für die dynamische Anzeigenbereitstellung in einem einfachen Videoplayer wiedergeben. Wenn Sie ein fertiges Beispiel verwenden möchten, laden Sie die Beispiel-App für die Pod-Bereitstellung (Obj C oder Swift) herunter.

Pod-Auslieferung mit IMA3-Anzeigen – Übersicht

Die Pod-Auslieferung mit dem IMA DAI SDK für tvOS lässt sich in zwei Hauptkomponenten implementieren:

  • StreamRequest: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss mit IMAPodStreamRequest oder IMAPodVODStreamRequest erstellt werden, um die Pod-Bereitstellung zu aktivieren. Beide Methoden erfordern einen Netzwerkcode und IMAPodStreamRequest benötigt außerdem einen benutzerdefinierten Asset-Schlüssel. Ein API-Schlüssel ist optional.

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

Voraussetzungen

Für den Start ist Folgendes erforderlich:

  • Xcode 13 oder höher.
  • CocoaPods (bevorzugt), Swift Package Manager oder eine heruntergeladene Kopie des IMA SDK for tvOS.
  • Eine tvOS-App, in der das IMA DAI SDK bereits verwendet wird, um Videostreams mit Anzeigen für die dynamische Anzeigenbereitstellung abzuspielen Wenn Sie noch keine solche App haben, empfehlen wir als Ausgangspunkt tvOS DAI BasicExample. Das BasicExample enthält die Codebasis, auf die in dieser Anleitung verwiesen wird. Weitere Informationen zum Implementieren des IMA DAI SDK finden Sie in der Kurzanleitung.

Variablen für die Pod-Auslieferung einrichten

Alle für die Pod-Bereitstellung erforderlichen Änderungen werden in ViewController.swift in Swift oder ViewController.m in Objective-C vorgenommen. Für die Snippets in diesem Leitfaden wird standardmäßig die Sprache Swift verwendet. Der erste Schritt besteht darin, die konstanten Variablen zu aktualisieren.

Im Folgenden sind die Konstanten für Anzeigen-Pod-Stream-Anfragen aufgeführt, die hinzugefügt werden sollen:

  • STREAM_URL (nur für Livestreams verwendet): Die Videostream-URL, die von Ihrer Manifestbearbeitung oder einem Drittanbieter für die Pod-Bereitstellung bereitgestellt wird. Sie sollten die Stream-ID aus dem IMA DAI SDK einfügen, bevor Sie eine Anfrage stellen. In diesem Fall enthält die Stream-URL den Platzhalter "[[STREAMID]]", der durch die Stream-ID ersetzt wird, bevor eine Anfrage gestellt wird.
  • NETWORK_CODE: Das ist der Netzwerkcode für Ihr Ad Manager 360-Konto.
  • CUSTOM_ASSET_KEY (nur für Livestreams verwendet): Der benutzerdefinierte Assetschlüssel, der Ihr Pod-Auslieferungsereignis in Ad Manager 360 identifiziert. Dies kann von Ihrem Manifestmanager oder einem Drittanbieter-Pod-Bereitstellungspartner erstellt werden.
  • API_KEY (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 =
    "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
  static let networkCode = "51636543"
  static let customAssetKey = "google-sample"
  static let APIKey = ""
  static let backupStreamURLString =
    "http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"

  var adsLoader: IMAAdsLoader?
  ...

Anfrage für einen Live- oder VOD-Pod-Stream erstellen

Livestream-Pod-Bereitstellung

Ändern Sie die Methode requestStream, 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-Bereitstellung für VOD-Streams

Ändern Sie die Methode requestStream, um eine VOD-Pod-Stream-Anfrage durch Instanziieren von IMAPodVODStreamRequest zu erstellen.

  ...

  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

Livestream-Pod-Bereitstellung

Ändern Sie die Methoden IMAAdsLoaderDelegate mit streamManager.streamId, um die Stream-ID abzurufen. Fügen Sie dann die Stream-ID in den STREAM_URL ein und ersetzen Sie "[[STREAMID]]". Nach dieser Änderung 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-Bereitstellung für VOD-Streams

Ändern Sie die Methoden IMAAdsLoaderDelegate mit streamManager.streamId, um die Stream-ID abzurufen. Fordern Sie dann eine Stream-URL von Ihrem Videotechnologiepartner (VTP) an und rufen Sie IMAStreamManager.loadThirdPartyStream() auf, damit IMA die Stream-URL und alle vom 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
  }

Fertig! Sie fordern jetzt mit dem IMA DAI SDK für tvOS Anzeigen in einem Pod-Auslieferungsstream an und präsentieren sie. Weitere Beispiele für das verwendete IMA DAI SDK finden Sie in den Beispielen auf GitHub.