Specyfikacja pełnoekranowych reklam HLS wprowadza elastyczny sposób planowania i wstawiania reklam do strumienia wideo lub audio. W przypadku podejścia po stronie klienta aplikacja ma pełną kontrolę nad tym, kiedy wysyłać żądania dotyczące przerw na reklamy i kiedy je odtwarzać. W tym celu tworzy klasę AVPlayerInterstitialEvent. To podejście nie wymaga tagów EXT-X-DATERANGE w plikach manifestu strumienia treści. Reklamy pełnoekranowe HLS po stronie klienta umożliwiają dynamiczne wstawianie reklam do dowolnych treści bez konieczności modyfikowania pliku manifestu strumienia ani plików multimedialnych.
Ten przewodnik zawiera informacje o integracji pakietu Interactive Media Ads (IMA) SDK z aplikacją odtwarzacza wideo, która tworzy sesję transmisji na żywo z wstawianiem reklam sterowanym przez serwer (SGAI) i planuje reklamy pełnoekranowe po stronie klienta. Więcej informacji znajdziesz w artykule DAI sterowane przez serwer.
Wymagania wstępne
Zanim zaczniesz, musisz mieć:
Nowy projekt Xcode z interfejsem użytkownika
Storyboard. Więcej informacji znajdziesz w artykule Tworzenie projektu Xcode dla aplikacji.Google IMA SDK. Więcej informacji znajdziesz w artykule Konfigurowanie pakietu IMA SDK na potrzeby DAI.
Te parametry żądania transmisji na żywo z dynamicznym wstawianiem reklam:
NETWORK_CODE: kod sieci Google Ad Managera.CUSTOM_ASSET_KEY: Twój ciąg niestandardowy identyfikujący zdarzenie transmisji na żywo DAI. Zdarzenie transmisji na żywo musi mieć typ dynamicznego wstawiania reklam Blok reklamowy z plikiem manifestu.
Konfigurowanie scenorysu
W pliku iPhone.storyboard wykonaj te czynności:
- Utwórz obiekt
UIViewjako kontener odtwarzacza wideo i interfejsu reklamy. - Utwórz właściwość
adUIViewklasyViewController, aby połączyć ją z obiektemUIView. - W obiekcie
adUIViewutwórzUIButton, który będzie pełnił funkcję przycisku odtwarzania. - Utwórz
playButtonusługę klasyViewController, aby połączyć się z obiektemUIButton, oraz funkcjęonPlayButtonTouchdo obsługi kliknięć użytkownika.
Inicjowanie narzędzia do wczytywania reklam
W zdarzeniu viewDidLoad głównego kontrolera widoku wykonaj te czynności:
- Skonfiguruj odtwarzacz wideo za pomocą klas
AVPlayeriAVPlayerLayer. - Tworzenie obiektów
IMAAdDisplayContaineriIMAAVPlayerVideoDisplay. Kontener wyświetlania reklamy określaadUIView, w którym pakiet IMA DAI SDK ma wstawiać podrzędne widoki interfejsu reklamy. Obiekt wyświetlania wideo pełni funkcję pomostu między logiką reklamową pakietu IMA DAI SDK a systemem odtwarzania AVFoundation, śledząc odtwarzanie reklam wideo. - Zainicjuj obiekt
IMAAdsLoaderza pomocą ustawień odtwarzania reklam i lokalizacji interfejsu reklam.
Poniższy przykład pokazuje, jak zainicjować moduł wczytywania reklam za pomocą pustego obiektu IMASettings:
Tworzenie żądania strumienia
Aby wysłać żądanie wyświetlenia reklam w strumieniu treści, utwórz obiekt IMAPodStreamRequest i przekaż go do instancji IMAAdsLoader. Opcjonalnie ustaw właściwość adTagParameters, aby podać opcje dynamicznego wstawiania reklam i parametry kierowania dla strumienia.
W tym przykładzie wywołujemy metodę loadAdStream w zdarzeniu viewDidAppear:
W aplikacji w wersji produkcyjnej wywołaj metodę loadAdStream po wybraniu przez użytkownika strumienia treści.
Obsługa zdarzeń wczytywania strumienia
Zaimplementuj protokół IMAAdsLoaderDelegate, aby obsługiwać powodzenie lub niepowodzenie żądania strumienia:
- Jeśli operacja się uda, otrzymasz obiekt
IMAAdsLoadedDatazawierającyIMAStreamManager. Zapisz wartośćstreamManager.streamIddla bieżącej sesji DAI. - W przypadku niepowodzenia zarejestruj błąd.
W tym przykładzie obsługiwane jest zdarzenie wczytania strumienia i rejestrowane jest zdarzenie nieudanego wczytania strumienia:
Planowanie wstawiania reklam
Aby zaplanować przerwę na reklamę, utwórz obiekt AVPlayerInterstitialEvent. Ustaw właściwość templateItems obiektu zdarzenia na tablicę obiektów AVPlayerItem, gdzie każdy obiekt elementu zawiera adres URL manifestu bloku reklamowego.
Aby utworzyć adres URL pliku manifestu bloku reklamowego, postępuj zgodnie z instrukcjami w dokumentacji Metoda: plik manifestu bloku reklamowego HLS.
Na potrzeby demonstracji poniższy przykład generuje ciąg identyfikatora zasobu za pomocą bieżącego czasu transmisji na żywo. Funkcja generatePodIdentifier zwraca identyfikator zasobnika jako ad_break_id/mid-roll-{minute}.
W aplikacji produkcyjnej pobierz identyfikator bloku reklamowego ze źródła, które zapewnia unikalne wartości dla każdej przerwy na reklamę, zsynchronizowane dla wszystkich widzów transmisji na żywo.
W tym przykładzie przerwa na reklamę jest zaplanowana tak, aby rozpoczęła się w ciągu 2 minut od kliknięcia przez użytkownika przycisku odtwarzania:
scheduleAdInsertion metoda
oblicza czas rozpoczęcia przerwy na reklamę i tworzy adres URL pliku manifestu bloku reklamowego. Użyj tego adresu URL, aby utworzyć obiekt AVPlayerInterstitialEvent.
Opcjonalnie możesz użyć struktury AVPlayerInterstitialEvent.Restrictions, aby ograniczyć możliwość pomijania lub przewijania przez użytkownika podczas odtwarzania reklamy.
Obsługa zdarzeń związanych z reklamami
Aby obsługiwać zdarzenia związane z reklamami, zaimplementuj protokół
IMAStreamManagerDelegate. Dzięki temu możesz śledzić początek i koniec przerw na reklamy oraz uzyskiwać informacje o poszczególnych reklamach.
Uruchom aplikację. Jeśli się to uda, możesz wysyłać żądania reklam pełnoekranowych i je odtwarzać za pomocą strumienia manifestu wyświetlania w podzie.