Einführung in das IMA DAI SDK

Mit IMA SDKs können Sie Multimedia-Anzeigen ganz einfach in Ihre Websites und Apps einbinden. IMA SDKs können Anzeigen von beliebigen VAST-kompatiblen Ad-Server bereitstellen und die Anzeigenwiedergabe in Ihren Apps verwalten. Mit IMA SDKs für die dynamische Anzeigenbereitstellung Streamanfrage für Anzeigen- und Contentvideo (VOD- oder Livecontent) Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht zwischen Anzeigen- und Inhaltsvideo wechseln müssen.

Wählen Sie die gewünschte dynamische Anzeigenbereitstellungslösung aus.

Pod-Auslieferung mit dynamischer Anzeigenbereitstellung

In dieser Anleitung wird gezeigt, wie du einen Livestream oder VOD-Stream mit der Pod-Auslieferung mit dynamischer Anzeigenbereitstellung mit dem IMA DAI SDK für iOS und einem einfachen Videoplayer wiedergibst. Wenn du dir ein fertiges Beispiel ansehen möchtest, lade das Beispiel für das Bereitstellen von Pods herunter.

IMA DAI Pod Serving – Übersicht

Die Implementierung der Pod-Auslieferung mit dem IMA DAI SDK für iOS umfasst zwei wichtige Komponenten:

  • StreamRequest: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss mit einer der folgenden Methoden erstellt werden: IMAPodStreamRequest oder IMAPodVODStreamRequest um die Pod-Auslieferung zu aktivieren. Für beide Methoden ist ein Netzwerkcode erforderlich. Für IMAPodStreamRequest ist außerdem ein benutzerdefinierter Asset-Schlüssel erforderlich. 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 Stream-Ereignissen 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 iOS
  • Eine iOS-App, die bereits mit dem IMA DAI SDK eingerichtet ist, um Videostreams wiederzugeben Anzeigen für die dynamische Anzeigenbereitstellung. Wenn Sie noch keine solche App haben, empfehlen wir Ihnen, als Ausgangspunkt das iOS DAI-Grundbeispiel zu verwenden. Das BasicExample hat die Codebasis, auf die in diesem . Weitere Informationen zur Implementierung des IMA DAI SDK finden Sie in der Kurzanleitung

Variablen für die Pod-Auslieferung einrichten

Alle für die Pod-Auslieferung erforderlichen Änderungen werden in ViewController.swift in swift oder ViewController.m in Objective-C. In den Snippets in diesem Leitfaden wird standardmäßig die Swift-Programmiersprache verwendet. Der erste Schritt besteht darin, Variablen dargestellt werden.

Hier sind die Konstanten für die Ad-Pod-Stream-Anfragen, die hinzugefügt werden sollen:

  • STREAM_URL (Nur für Livestreams verwendet): Die Videostream-URL, die von deinem Manifest-Manipulator oder Drittanbieterpartner mit Pod-Bereitstellung bereitgestellt wird. Du solltest die vom IMA DAI SDK bereitgestellte Stream-ID eingeben müssen, bevor du eine Anfrage sendest. In diesem Fall enthält die Stream-URL einen Platzhalter, "[[STREAMID]]", die durch die Stream-ID ersetzt wird, bevor ein
  • NETWORK_CODE: Der Netzwerkcode für Ihr Ad Manager 360-Konto.
  • CUSTOM_ASSET_KEY (Nur für Livestreams verwendet): Der benutzerdefinierte Asset-Schlüssel, mit dem das Pod-Auslieferungsereignis in Ad Manager 360 identifiziert wird. Dies kann erstellt werden, indem für die Manifestbearbeitung oder den Drittanbieter-Pod-Auslieferungspartner.
  • API_KEY (nur für Livestreams verwendet): Ein optionaler API-Schlüssel, der erforderlich, um eine Stream-ID aus dem IMA DAI SDK abzurufen.

Ändern Sie den Variablenbereich 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?
  ...

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

Auslieferung von Livestream-Pods

Ändere die requestStream-Methode, um eine Live-Pod-Stream-Anfrage zu erstellen, indem du IMAPodStreamRequest instanzierst.

  ...

  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

Ändere die Methode requestStream, um eine VOD-Pod-Stream-Anfrage zu erstellen, indem du IMAPodVODStreamRequest instanzierst.

  ...

  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

Auslieferung von Livestream-Pods

Ändern Sie die IMAAdsLoaderDelegate-Methoden und verwenden Sie streamManager.streamId, um die Stream-ID abzurufen. Füge dann die Stream-ID anstelle von "[[STREAMID]]" in STREAM_URL ein. 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
  }

  ...

VOD-Stream-Pod-Auslieferung

Ändern Sie die IMAAdsLoaderDelegate-Methoden mit streamManager.streamId, um Stream-ID abrufen Fordern Sie dann eine Stream-URL von Ihrer Videotechnologie an. Partner (VTP). Rufen Sie dann IMAStreamManager.loadThirdPartyStream() auf, um die IMA die Stream-URL und alle von deinem TVP zurückgegebenen Untertitel laden.

  ...

  // 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! Du forderst jetzt Anzeigen in einem Stream für die Pod-Auslieferung mit dem IMA DAI SDK für iOS an und zeigst sie an. Weitere Beispiele für die Verwendung des IMA DAI SDK Sehen Sie sich die Beispiele auf GitHub an.