Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą żądania reklam z Serwer reklam zgodny i zarządzanie odtwarzaniem reklam w aplikacjach. Dzięki pakietom IMA DAI SDK aplikacje wysyłają żądanie strumienia reklamy i treści wideo (VOD lub treści na żywo). Pakiet SDK zwraca połączony strumień wideo, dzięki czemu nie musisz zarządzać przełączaniem się między reklamą a filmem z treściami w aplikacji.
Wybierz interesujące Cię rozwiązanie DAI
Blok reklamowy z dynamicznym wstawianiem reklam
Z tego przewodnika dowiesz się, jak odtworzyć blok reklamowy z dynamicznym wstawianiem reklam na żywo lub strumień VOD za pomocą pakiet IMA DAI SDK na tvOS z prostym odtwarzaczem. Jeśli chcesz postępować zgodnie z przykładem, pobierz aplikację Pod Serving (Obj C lub Swift).
Omówienie wyświetlania bloków reklamowych w ramach IMA DAI
Implementacja wyświetlania podów za pomocą pakietu IMA DAI SDK na potrzeby systemu tvOS wiąże się z 2 głównymi komponenty:
StreamRequest
: obiekt definiujący żądanie strumienia do serwerów reklamowych Google. Musi być utworzony za pomocąIMAPodStreamRequest
lubIMAPodVODStreamRequest
aby włączyć wyświetlanie bloków reklamowych. Obie metody wymagają kodu sieci, aIMAPodStreamRequest
wymaga też klucza niestandardowego zasobu. Klucz interfejsu API to opcjonalnie.IMAStreamManager
: obiekt obsługujący komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. wysyła pingi śledzące i przekazuje zdarzenia strumienia do wydawcy.
Wymagania wstępne
Zanim zaczniesz, musisz mieć:
- Xcode w wersji 13 lub nowszej.
- CocoaPods (preferowane), Menedżer pakietów Swift lub pobranej kopii Pakiet IMA DAI SDK dla systemu tvOS
- Aplikacja na tvOS skonfigurowana przez pakiet IMA DAI SDK do odtwarzania strumieni wideo Reklamy DAI. Jeśli nie masz jeszcze takiej aplikacji, zalecamy skorzystanie z Funkcja dynamicznego wstawiania reklam w tvOS BasicExample jako i punktu początkowego. Plik BasicExample zawiera bazę kodu, do której odwołuje się ten przewodnik. Więcej informacji o wdrażaniu pakietu IMA DAI SDK znajdziesz tutaj: Krótki przewodnik
Konfigurowanie zmiennych podanych w ramach podgrupy
Wszystkie zmiany wymagane do wyświetlania podów są wprowadzane w ViewController.swift
w:
Swift lub ViewController.m
w Objective-C. Fragmenty tego przewodnika
domyślnie używany jest język Swift. Pierwszym krokiem jest zaktualizowanie
zmiennych stałych.
Oto stałe żądania strumienia bloku reklamowego, które należy dodać:
STREAM_URL
(używany tylko w przypadku transmisji na żywo): adres URL strumienia wideo podany przez manipulatora manifestu lub partnera zewnętrznego korzystającego z podservingu. Powinna musisz wstawić identyfikator strumienia dostarczony przez pakiet IMA DAI SDK przed przesłać prośbę. 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 Twojego konta Ad Managera 360.CUSTOM_ASSET_KEY
(używany tylko w transmisjach na żywo): niestandardowy klucz pliku, który identyfikuje zdarzenie wyświetlenia bloku reklamowego w usłudze Ad Manager 360. Kto może ją utworzyć za pomocą manipulatora manifestu lub zewnętrznego partnera obsługującego pody.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ę zmiennej przykładu na taką:
...
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?
...
Utwórz żądanie pod strumienia na potrzeby transmisji na żywo lub VOD.
Blok reklamowy w transmisjach na żywo
Zmodyfikuj metodę requestStream
, aby utworzyć żądanie strumienia bloku reklamowego na żywo przez:
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 ramach strumienia VOD
Zmień metodę requestStream
, aby utworzyć żądanie strumienia bloku reklamowego 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
Blok reklamowy w transmisjach na żywo
Zmodyfikuj metody IMAAdsLoaderDelegate
, używając streamManager.streamId
do
pobierz identyfikator strumienia. Następnie wstaw identyfikator strumienia do pola STREAM_URL
, zastępując
"[[STREAMID]]"
Po wprowadzeniu tej zmiany możesz ustawić nowy adres URL strumienia 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 ramach strumienia VOD
Zmodyfikuj metody IMAAdsLoaderDelegate
, używając streamManager.streamId
do
pobierz identyfikator strumienia. Następnie poproś o adres URL transmisji za pomocą używanej technologii wideo.
partnera (VTP) i wywołaj IMAStreamManager.loadThirdPartyStream()
, by mieć IMA
wczytaj adres URL transmisji i wszystkie napisy zwrócone przez TVP.
...
// 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
}
Znakomicie. Teraz żądasz i wyświetlasz reklamy w strumieniu pod służącym do wyświetlania reklam za pomocą pakietu IMA DAI SDK na potrzeby tvOS. Aby zobaczyć inne przykłady użycia pakietu IMA DAI SDK, zapoznaj się z przykładami w GitHub.