Die HLS-Spezifikation für Interstitials bietet eine flexible Möglichkeit, Werbung in einen Video- oder Audiostream einzuplanen und einzufügen. Beim clientseitigen Ansatz übernimmt Ihre Anwendung die vollständige Kontrolle darüber, wann Werbeunterbrechungen angefordert und wiedergegeben werden. Dazu wird die Klasse AVPlayerInterstitialEvent erstellt. Bei dieser Methode sind die EXT-X-DATERANGE-Tags in den Manifesten des Content-Streams nicht erforderlich. Mit clientseitigen HLS-Interstitials können Sie Anzeigen dynamisch in beliebige Inhalte einfügen, ohne das Streammanifest oder die Media-Dateien ändern zu müssen.
In diesem Leitfaden wird beschrieben, wie Sie das IMA SDK (Interactive Media Ads) in eine Videoplayer-App einbinden, die eine SGAI-Livestreamsitzung (Server Guided Ad Insertion) erstellt und Interstitials clientseitig plant. Weitere Informationen zur servergesteuerten dynamischen Anzeigenbereitstellung
Vorbereitung
Für den Start ist Folgendes erforderlich:
Ein neues Xcode-Projekt, in dem
Storyboardfür die Benutzeroberfläche verwendet wird. Weitere Informationen finden Sie unter Xcode-Projekt für eine App erstellen.Google IMA SDK Weitere Informationen finden Sie unter IMA SDK für DAI einrichten.
Die folgenden Parameter für Ihre DAI-Livestreamanfrage:
NETWORK_CODE: Ihr Google Ad Manager-Netzwerkcode.CUSTOM_ASSET_KEY: Ihr benutzerdefinierter String zur Identifizierung des DAI-Livestream-Events. Für das Livestream-Ereignis muss der DAI-Typ „Manifest für die Pod-Auslieferung“ festgelegt sein.
Storyboard konfigurieren
Führen Sie in der Datei iPhone.storyboard folgende Schritte aus:
- Erstellen Sie ein
UIView-Objekt als Container für den Videoplayer und die Anzeigen-UI. - Erstellen Sie eine
adUIView-Property der KlasseViewController, um eine Verbindung zumUIView-Objekt herzustellen. - Erstellen Sie im
adUIView-Objekt einUIButton, das als Schaltfläche zum Abspielen fungiert. - Erstellen Sie eine
playButton-Property der KlasseViewController, um eine Verbindung zumUIButton-Objekt herzustellen, und eineonPlayButtonTouch-Funktion, um Nutzer-Taps zu verarbeiten.
Anzeigen-Loader initialisieren
Gehen Sie im viewDidLoad-Ereignis des Haupt-View-Controllers so vor:
- Richten Sie einen Videoplayer mit den Klassen
AVPlayerundAVPlayerLayerein. - Erstellen Sie
IMAAdDisplayContainer- undIMAAVPlayerVideoDisplay-Objekte. Der Container für die Anzeigendarstellung gibt dieadUIViewfür das IMA DAI SDK an, in die die Unteransichten der Anzeigen-UI eingefügt werden sollen. Das Videoanzeigeobjekt fungiert als Brücke zwischen der Anzeigenlogik des IMA DAI SDK und dem AVFoundation-Wiedergabesystem und verfolgt die Wiedergabe von Videoanzeigen. - Initialisieren Sie das
IMAAdsLoader-Objekt mit den Einstellungen für die Anzeigenwiedergabe und die Lokalisierung der Anzeigen-UI.
Im folgenden Beispiel wird ein Ads Loader mit einem leeren IMASettings-Objekt initialisiert:
Streaminganfrage stellen
Wenn Sie Anzeigen für einen Contentstream anfordern möchten, erstellen Sie ein IMAPodStreamRequest-Objekt und übergeben Sie es an Ihre IMAAdsLoader-Instanz. Optional können Sie das Attribut adTagParameters festlegen, um DAI-Optionen und Targeting-Parameter für Ihren Stream anzugeben.
In diesem Beispiel wird die Methode loadAdStream im Ereignis viewDidAppear aufgerufen:
Rufen Sie in Ihrer Produktions-App die Methode loadAdStream auf, nachdem der Nutzer einen Contentstream ausgewählt hat.
Stream-Ladeereignisse verarbeiten
Implementieren Sie das Protokoll IMAAdsLoaderDelegate, um den Erfolg oder Misserfolg der Streamanfrage zu verarbeiten:
- Bei Erfolg erhalten Sie ein
IMAAdsLoadedData-Objekt mit demIMAStreamManager. Speichern Sie denstreamManager.streamId-Wert für die aktuelle DAI-Sitzung. - Bei einem Fehler wird der Fehler protokolliert.
Im folgenden Beispiel wird das Ereignis „Stream geladen“ verarbeitet und das Ereignis „Stream konnte nicht geladen werden“ protokolliert:
Anzeigenunterbrechungen planen
Wenn Sie eine Werbeunterbrechung planen möchten, erstellen Sie ein AVPlayerInterstitialEvent-Objekt. Legen Sie die templateItems-Property des Ereignisobjekts auf ein Array von AVPlayerItem-Objekten fest, wobei jedes Elementobjekt eine Ad-Pod-Manifest-URL enthält.
Hier finden Sie eine Anleitung zum Erstellen einer URL für ein HLS-Pod-Manifest.
Im folgenden Beispiel wird zur Veranschaulichung ein Pod-Kennzeichnungsstring mit der aktuellen Zeit des Content-Livestreams generiert. Die Funktion generatePodIdentifier gibt die Pod-Kennung als ad_break_id/mid-roll-{minute} zurück.
Rufen Sie in Ihrer Produktions-App die Pod-ID aus einer Quelle ab, die für jede Werbeunterbrechung eindeutige Werte bereitstellt, die für alle Zuschauer des Livestreams synchronisiert werden.
Im folgenden Beispiel wird eine Werbeunterbrechung geplant, die innerhalb der nächsten zwei Minuten nach dem Klicken des Nutzers auf die Schaltfläche „Wiedergabe“ beginnt:
Mit der scheduleAdInsertion-Methode wird die Startzeit der Werbeunterbrechung berechnet und eine Manifest-URL für den Anzeigen-Pod erstellt. Verwenden Sie diese URL, um ein AVPlayerInterstitialEvent-Objekt zu erstellen.
Optional können Sie den AVPlayerInterstitialEvent.Restrictions-Struct verwenden, um das Überspringen oder Zurückspulen von Nutzern während der Anzeigenwiedergabe einzuschränken.
Anzeigenereignisse verarbeiten
Implementieren Sie das Protokoll IMAStreamManagerDelegate, um Anzeigenereignisse zu verarbeiten. So können Sie nachvollziehen, wann Werbeunterbrechungen beginnen und enden, und Informationen zu einzelnen Anzeigen abrufen.
Führen Sie Ihre App aus. Wenn das gelingt, können Sie Interstitials über einen Manifeststream für die Pod-Bereitstellung anfordern und abspielen.