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 mitImaSdkFactory.createPodStreamRequest()
oderImaSdkFactory.createPodVodStreamRequest()
erstellt werden, um die Pod-Auslieferung zu aktivieren. Für diese Methoden ist ein Netzwerkcode erforderlich. FürcreatePodStreamRequest
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
Eine Android-App, die bereits mit dem IMA DAI SDK für die Wiedergabe von Videostreams mit DAI-Anzeigen eingerichtet ist. Wenn Sie noch keine solche App haben, empfehlen wir als Ausgangspunkt das Android DAI BasicExample. Das BasicExample enthält den Code, auf den in diesem Leitfaden verwiesen wird.
Damit die dynamische Anzeigenbereitstellung in IMA funktioniert, muss deine App ID3-Ereignisse mit
VideoStreamPlayerCallback.onUserTextReceived()
senden. Beispiel für ein Code-Snippet für Full-Service-DAID
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.