Mit IMA SDKs können Sie Multimedia-Anzeigen ganz einfach in Ihre Websites und Apps einbinden. IMA SDKs können Anzeigen von jedem VAST-kompatiblen Ad-Server anfordern und die Anzeigenwiedergabe in Ihren Apps verwalten. Mit IMA DAI SDKs senden Apps Streamanfragen für Anzeigen- und Contentvideos – entweder für VOD oder Livecontent. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht mehr zwischen Anzeige- und Contentvideo wechseln müssen.
Gewünschte Lösung für die dynamische Anzeigenbereitstellung auswählen
Dynamische Anzeigenbereitstellung für die Pod-Auslieferung
In dieser Anleitung wird beschrieben, wie Sie mit dem IMA DAI SDK für iOS einen Live- oder VOD-Stream für die Pod-Auslieferung mit dynamischer Anzeigenbereitstellung über einen einfachen Videoplayer wiedergeben. Wenn Sie ein vollständiges Beispiel verwenden möchten, laden Sie das Beispiel für die Pod-Bereitstellung herunter.
Pod-Auslieferung mit der dynamischen Anzeigenbereitstellung von IMA – Übersicht
Die Implementierung der Pod-Auslieferung mit dem IMA DAI SDK für iOS umfasst zwei Hauptkomponenten:
StreamRequest
: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss mitIMAPodStreamRequest
oderIMAPodVODStreamRequest
erstellt werden, um die Pod-Bereitstellung zu aktivieren. Für beide Methoden ist ein Netzwerkcode erforderlich und fürIMAPodStreamRequest
ist auch 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 steuert, 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 DAI SDK für iOS
- Eine iOS-App, die bereits mit dem IMA DAI SDK eingerichtet ist, um Videostreams mit Anzeigen für die dynamische Anzeigenbereitstellung abzuspielen. Wenn Sie noch keine solche App haben, empfehlen wir als Ausgangspunkt das BasicExample für die dynamische Anzeigenbereitstellung für iOS. Das BasicExample verwendet die Codebasis, auf die in diesem Leitfaden 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.
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 der Manifestbearbeitung oder einem Drittanbieter mit Pod-Auslieferung bereitgestellt wird. Sie müssen die vom IMA DAI SDK bereitgestellte Stream-ID einfügen, bevor Sie eine Anfrage stellen können. In diesem Fall enthält die Stream-URL den Platzhalter"[[STREAMID]]"
, der vor der 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 verwendet): Der benutzerdefinierte Assetschlüssel, der das Pod-Auslieferungsereignis in Ad Manager 360 identifiziert. Sie kann von Ihrem Manifest-Manager oder einem Drittanbieter für die Pod-Auslieferung erstellt werden.API_KEY
(nur für Livestreams verwendet): Ein optionaler API-Schlüssel, der unter Umständen erforderlich ist, 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 Live-Pod-Stream-Anfrage 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-Auslieferung von VOD-Streams
Ändern Sie die Methode requestStream
, um eine VOD-Pod-Stream-Anfrage zu erstellen, indem Sie IMAPodVODStreamRequest
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 = 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 die Stream-ID abzurufen. Fügen Sie dann die Stream-ID in STREAM_URL
ein und ersetzen Sie dabei "[[STREAMID]]"
. 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
}
...
Pod-Auslieferung von VOD-Streams
Ändern Sie die IMAAdsLoaderDelegate
-Methoden mit streamManager.streamId
, um die Stream-ID abzurufen. Fordern Sie dann eine Stream-URL bei Ihrem Videotechnologiepartner (VTP) an. Rufen Sie dann IMAStreamManager.loadThirdPartyStream()
auf, damit IMA die Stream-URL und alle von Ihrem 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 verwenden jetzt das IMA DAI SDK für iOS, um Anzeigen in einem Pod-Auslieferungsstream anzufordern und auszuliefern. Weitere Beispiele für das verwendete IMA DAI SDK finden Sie in den Beispielen auf GitHub.