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 <ph type="x-smartling-placeholder"></ph> 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 kombinierten Videostream, sodass Sie nicht zwischen Anzeige und Contentvideo wechseln müssen. in Ihrer App.

Gewünschte Lösung für die dynamische Anzeigenbereitstellung auswählen

<ph type="x-smartling-placeholder"></ph>

Dynamische Anzeigenbereitstellung für die Pod-Auslieferung

In dieser Anleitung wird gezeigt, wie Sie einen Live- oder VOD-Stream für die Pod-Auslieferung mit dynamischer Anzeigenbereitstellung über IMA DAI SDK für tvOS mit einem einfachen Videoplayer. Wenn Sie dem und das fertige Beispiel herunterladen, können Sie die Beispielanwendung für die Pod-Bereitstellung herunterladen. (Obj C oder Swift).

Pod-Auslieferung mit der dynamischen Anzeigenbereitstellung von IMA – Übersicht

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

  • StreamRequest: Ein Objekt, das eine Streamanfrage für die Werbeserver von Google. Muss mit einer der folgenden Methoden erstellt werden: IMAPodStreamRequest oder IMAPodVODStreamRequest um die Pod-Auslieferung zu aktivieren. Für beide Methoden sind ein Netzwerkcode und 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 den Videostream und das IMA DAI SDK verwenden, z. B. durch das Auslösen von Tracking-Pings und Stream-Ereignisse an den Publisher weiterleiten.

Vorbereitung

Für den Start ist Folgendes erforderlich:

  • Xcode 13 oder höher
  • CocoaPods (bevorzugt), Swift Package Manager oder ein heruntergeladene Kopie der IMA DAI SDK für tvOS:
  • Eine tvOS-App, die bereits mit dem IMA DAI SDK eingerichtet wurde, um Videostreams wiederzugeben Anzeigen für die dynamische Anzeigenbereitstellung. Wenn Sie noch keine solche App haben, empfehlen wir die Verwendung des DAI für tvOS BasicExample als Parameter Ausgangspunkt ist. 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 vorgenommen in Swift oder ViewController.m in Objective-C Die Snippets in diesem Leitfaden wird standardmäßig Swift verwendet. Der erste Schritt besteht darin, Variablen dargestellt werden.

Dies 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 Ihre Manifestbearbeitung oder den Drittanbieter mit der Pod-Auslieferung. Er sollte müssen Sie die vom IMA DAI SDK bereitgestellte Stream-ID einfügen, bevor Sie eine Anfrage stellen. 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 Assetschlüssel, der das Pod-Auslieferungsereignis in Ad Manager 360 identifiziert. 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 Variablenabschnitt des Beispiels so, dass er wie folgt aussieht:

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

Pod-Auslieferung im Livestream

Ändern Sie die Methode requestStream, um eine Anfrage für einen Livestream-Pod-Stream zu erstellen: IMAPodStreamRequest wird instanziiert.

  ...

  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 wird instanziiert.

  ...

  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

Pod-Auslieferung im Livestream

Ändern Sie die IMAAdsLoaderDelegate-Methoden mit streamManager.streamId, um rufen Sie die Stream-ID ab. Fügen Sie dann die Stream-ID in STREAM_URL ein und ersetzen Sie "[[STREAMID]]". Nach dieser Änderung kann die neue Stream-URL mit videoDisplay.loadStream() festgelegt.

  ...

  // 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 mit streamManager.streamId, um rufen Sie die Stream-ID ab. Fordern Sie dann eine Stream-URL von Ihrer Videotechnologie an. Partnerunternehmen (VTP) und rufen Sie IMAStreamManager.loadThirdPartyStream() an, 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! Sie fordern jetzt Anzeigen in einem Pod-Auslieferungsstream mit IMA DAI SDK für tvOS. Weitere Beispiele für die Verwendung des IMA DAI SDK Sehen Sie sich die Beispiele auf GitHub an.