Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą wysyłać żądania reklam do dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w aplikacjach. Za pomocą pakietów IMA DAI SDK aplikacje wysyłają żądanie strumienia reklamy i treści wideo – VOD lub treści na żywo. Pakiet SDK zwraca wtedy połączony strumień wideo, dzięki czemu nie musisz zarządzać przełączaniem między reklamą a treściami wideo w aplikacji.
Wybierz interesujące Cię rozwiązanie DAI
Wyświetlanie bloków reklamowych w ramach dynamicznego wstawiania reklam
Z tego przewodnika dowiesz się, jak odtwarzać transmisję na żywo lub strumień VOD z wyświetlaniem bloków reklamowych w ramach dynamicznego wstawiania reklam za pomocą pakietu IMA DAI SDK na tvOS w odtwarzaczu wideo. Aby wyświetlić lub śledzić ukończoną przykładową integrację, pobierz przykładową aplikację do wyświetlania reklam w podcastach (Obj C lub Swift).
Omówienie wyświetlania bloków reklamowych w ramach dynamicznego wstawiania reklam w pakiecie IMA
Wdrażanie wyświetlania bloków reklamowych za pomocą pakietu IMA DAI SDK na tvOS obejmuje 2 główne komponenty:
StreamRequest
: obiekt, który definiuje żądanie strumienia do serwerów reklamowych Google. Aby włączyć obsługę bloków reklamowych, musisz utworzyć plik manifestu za pomocąIMAPodStreamRequest
lubIMAPodVODStreamRequest
. Obie metody wymagają podania kodu sieci, aIMAPodStreamRequest
dodatkowo niestandardowego klucza zasobu. Klucz interfejsu API jest opcjonalny.IMAStreamManager
: obiekt, który obsługuje komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. wysyła pingi śledzące i przekazuje wydawcy zdarzenia strumienia.
Wymagania wstępne
Zanim zaczniesz, musisz mieć:
- Xcode 13 lub nowszy.
- CocoaPods (preferowane), Swift Package Manager lub pobrana kopia pakietu IMA DAI SDK na tvOS.
- Aplikacja na tvOS skonfigurowana już z pakietem IMA DAI SDK do odtwarzania strumieni wideo z reklamami DAI. Jeśli nie masz jeszcze takiej aplikacji, zalecamy użycie tvOS DAI BasicExample jako punktu wyjścia. W przykładzie BasicExample znajduje się baza kodu, do której odwołuje się ten przewodnik. Więcej informacji o wdrażaniu pakietu IMA DAI SDK znajdziesz w krótkim przewodniku.
Konfigurowanie zmiennych wyświetlania bloków reklamowych
Wszystkie zmiany wymagane w przypadku Pod Serving są wprowadzane w ViewController.swift
w języku Swift lub ViewController.m
w języku Objective-C. Fragmenty kodu w tym przewodniku domyślnie korzystają z języka Swift. Pierwszym krokiem jest zaktualizowanie zmiennych stałych.
Oto stałe żądania strumienia pakietu reklam, które należy dodać:
STREAM_URL
(Używany tylko w przypadku transmisji na żywo): adres URL strumienia wideo podany przez manipulator pliku manifestu lub partnera zewnętrznego korzystającego z wyświetlania bloków reklamowych. Przed wysłaniem żądania musisz wstawić identyfikator strumienia podany przez pakiet IMA DAI SDK. W tym przypadku adres URL strumienia zawiera obiekt zastępczy"[[STREAMID]]"
, który przed wysłaniem żądania jest zastępowany identyfikatorem strumienia.NETWORK_CODE
: kod sieci na koncie Ad Managera 360.CUSTOM_ASSET_KEY
(Używany tylko w przypadku transmisji na żywo): niestandardowy klucz zasobu, który identyfikuje zdarzenie wyświetlania bloków reklamowych w usłudze Ad Manager 360. Może go utworzyć manipulator pliku manifestu lub partner zewnętrzny zajmujący się wyświetlaniem bloków reklamowych.API_KEY
(Używany tylko w przypadku transmisji na żywo): opcjonalny klucz interfejsu API, który może być wymagany do pobrania identyfikatora strumienia z pakietu IMA DAI SDK.
Zmień sekcję zmiennych w przykładzie, aby pasowała do tej:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
Utwórz żądanie strumienia bloku reklamowego na potrzeby transmisji na żywo lub VOD.
Wyświetlanie podów transmisji na żywo
Zmodyfikuj metodę requestStream
, aby utworzyć prośbę o transmisję na żywo w formie podcastu, tworząc instancję IMAPodStreamRequest
.
...
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)
}
...
Wyświetlanie bloków reklamowych w strumieniu VOD
Zmodyfikuj metodę requestStream
, aby utworzyć żądanie strumienia podów VOD, tworząc instancję IMAPodVODStreamRequest
.
...
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)
}
...
Edytowanie i ustawianie adresu URL strumienia
Wyświetlanie podów transmisji na żywo
Zmodyfikuj metody IMAAdsLoaderDelegate
, używając streamManager.streamId
, aby uzyskać identyfikator strumienia. Następnie wstaw identyfikator strumienia w miejsce STREAM_URL
, zastępując "[[STREAMID]]"
. Po wprowadzeniu tej zmiany nowy adres URL transmisji można ustawić za pomocą videoDisplay.loadStream()
.
...
// 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
}
...
Wyświetlanie bloków reklamowych w strumieniu VOD
Zmodyfikuj metody IMAAdsLoaderDelegate
, używając streamManager.streamId
, aby uzyskać identyfikator strumienia. Następnie poproś partnera technologicznego ds. wideo o URL strumienia i wywołaj funkcję IMAStreamManager.loadThirdPartyStream()
, aby biblioteka IMA wczytała URL strumienia i wszystkie napisy zwrócone przez partnera technologicznego ds. wideo.
...
// 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
}
Czyszczenie zasobów IMA DAI
Gdy skończysz wysyłać żądania reklam i wyświetlać je w strumieniu z wyświetlaniem bloków reklamowych za pomocą pakietu IMA DAI SDK, zalecamy usunięcie wszystkich zasobów po zakończeniu sesji wyświetlania bloków reklamowych. Wywołaj funkcję IMAStreamManager.destroy()
, aby zatrzymać odtwarzanie strumienia, śledzenie reklam i zwolnić wszystkie załadowane zasoby strumienia.
Inne przykłady użycia pakietu SDK tvOS znajdziesz w przykładach w GitHubie.