Einführung in das IMA DAI SDK

Mit IMA SDKs lassen sich Multimedia-Anzeigen ganz einfach in 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 senden Apps eine Streamanfrage für Anzeigen- und Videoinhalte – entweder VOD- oder Liveinhalte. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie nicht zwischen Anzeigen- und Inhaltsvideo in Ihrer App wechseln müssen.

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

Pod-Auslieferung mit dynamischer Anzeigenbereitstellung

Mit IMA SDKs lassen sich Multimedia-Anzeigen ganz einfach in 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 senden Apps eine Streamanfrage für Anzeigen- und Videoinhalte – entweder VOD- oder Liveinhalte. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie nicht zwischen Anzeigen- und Inhaltsvideo in Ihrer App wechseln müssen.

In dieser Anleitung wird gezeigt, wie du einen Stream mit dynamischer Anzeigenbereitstellung und Pod-Auslieferung mit dem IMA DAI SDK und einem Videoplayer für die Wiedergabe von Live- und VOD-Streams abspielst. Wenn Sie sich eine fertige Beispielintegration ansehen oder folgen möchten, laden Sie das Beispiel für das Bereitstellen von Pods herunter.

IMA DAI Pod Serving – Übersicht

  • StreamRequest: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss entweder mit ImaSdkFactory.createPodStreamRequest() oder ImaSdkFactory.createPodVodStreamRequest() erstellt werden, um die Pod-Auslieferung zu aktivieren. Für diese Methoden ist ein Netzwerkcode erforderlich. Für createPodStreamRequest ist außerdem ein benutzerdefinierter Asset-Schlüssel und optional ein API-Schlüssel erforderlich. Beide enthalten weitere optionale Parameter.

  • StreamManager: 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

Variablen für die Pod-Auslieferung einrichten

Alle für die Pod-Auslieferung erforderlichen Änderungen werden in SampleAdsWrapper.java vorgenommen. Aktualisieren Sie zuerst die Konstantenvariablen.

Hier sind die Konstanten für Anzeigen-Pod-Streamanfragen, die hinzugefügt werden müssen:

  • STREAM_URL: Nur für Livestreams verwendet: Die Videostream-URL, die von deinem Manifest-Manipulator oder Drittanbieterpartner mit Pod-Auslieferung 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 den 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: Der benutzerdefinierte Asset-Schlüssel, mit dem das Pod-Auslieferungsereignis in Ad Manager 360 identifiziert wird. Diese kann von deinem Manifest-Bearbeiter oder Pod-Auslieferungspartner erstellt werden.

  • API_KEY: Nur für Livestreams: Optionaler API-Schlüssel, der zum Abrufen einer Stream-ID aus dem IMA DAI SDK erforderlich sein kann.

Das Android DAI BasicExample ist für die Wiedergabe verschiedener Streamtypen konzipiert, aber für die Pod-Auslieferung ist es so eingerichtet, dass nur ein Stream wiedergegeben wird. Ändern Sie den Variablenbereich des Beispiels so:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "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]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

Anfrage für einen Live- oder VOD-Pod-Stream erstellen, um die Pod-Auslieferung zu aktivieren

Auslieferung von Livestream-Pods

Die Methode buildStreamRequest() wurde entfernt, die zum Wechseln zwischen dem Erstellen verschiedener Streamtypen verwendet wurde. Ändern Sie dann requestAndPlayAds() in „callImaSdkFactory.createPodStreamRequest()“, um eine Anzeigenanfrage für die Auslieferung von Live-Pods zu erstellen. Rufe den Stream abschließend mit AdsLoader.requestStream() ab.

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

VOD-Stream-Pod-Auslieferung

Die Methode buildStreamRequest() wurde entfernt, die zum Wechseln zwischen dem Erstellen verschiedener Streamtypen verwendet wurde. Ändere dann requestAndPlayAds() in ImaSdkFactory.createPodVodStreamRequest(), um eine VOD-Anfrage für die Anzeigenbereitstellung für Pods zu erstellen. Rufe den Stream abschließend mit AdsLoader.requestStream() ab.

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Stream-URL bearbeiten und festlegen

Auslieferung von Livestream-Pods

Rufen Sie StreamManager.getStreamId() auf, um die Stream-ID abzurufen. Dieser muss dann in STEAM_URL eingefügt werden, wobei "[[STREAMID]]" ersetzt wird. Nach dieser Änderung kann die neue Stream-URL mit videoPlayer.setStreamUrl() festgelegt werden.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

VOD-Stream-Pod-Auslieferung

Rufen Sie StreamManager.getStreamId() auf, um die Stream-ID abzurufen. Fordere dann eine Stream-URL von deinem Technologiepartner im Videobereich an. Rufe dann StreamManager.loadThirdPartyStream() auf, damit IMA die Stream-URL und alle Untertitel lädt, die von deinem TVP zurückgegeben wurden.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

Wenn die Pod-Auslieferung aktiviert ist, ruft IMA VideoStreamPlayer.loadUrl() nicht auf. Daher kannst du alle Aufrufe an videoPlayer.setStreamUrl() und videoPlayer.play() daraus entfernen.

IMA-DAI-Assets bereinigen

Wenn du Anzeigen in einem Pod-Auslieferungsstream mit dem IMA DAI SDK angefordert und ausgeliefert hast, solltest du nach Abschluss der Pod-Auslieferungssitzung alle Ressourcen bereinigen. Rufe StreamManager.destroy() auf, um die Streamwiedergabe zu beenden, alle Anzeigen zu erfassen und alle geladenen Stream-Assets freizugeben.

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