Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą wysyłać żądania reklam z dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w aplikacjach. Dzięki pakietom SDK IMA DAI aplikacje wysyłają żądania strumienia danych wideo z reklam i treści wideo – VOD lub treści na żywo. Pakiet SDK zwraca połączony strumień wideo, więc nie musisz już zarządzać przełączaniem się między reklamą a treścią wideo w aplikacji.
Wybierz rozwiązanie DAI, które Cię interesuje
Blok reklamowy z dynamicznym wstawianiem reklam
Ten przewodnik pokazuje, jak odtwarzać strumień podów reklamowych z dynamicznym wstawianiem reklam na żywo lub VOD za pomocą pakietu IMA DAI SDK dla systemu tvOS i prostego odtwarzacza wideo. Jeśli chcesz zobaczyć pełną próbkę, pobierz przykładową aplikację do wyświetlania podów (Obj C lub Swift).
Omówienie wyświetlania podów z IMA DAI
Implementacja podów wyświetlanych za pomocą pakietu IMA DAI SDK dla systemu tvOS obejmuje 2 główne komponenty:
StreamRequest
: obiekt definiujący żądanie strumienia do serwerów reklamowych Google. Aby włączyć obsługę podów, trzeba je utworzyć za pomocąIMAPodStreamRequest
lubIMAPodVODStreamRequest
. Obie metody wymagają kodu sieci, aIMAPodStreamRequest
wymaga też niestandardowego klucza zasobu. Klucz interfejsu API jest opcjonalny.IMAStreamManager
: obiekt obsługujący komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. uruchamianie pingów śledzących i przekierowywanie zdarzeń strumienia do wydawcy.
Wymagania wstępne
Zanim zaczniesz, musisz mieć:
- Xcode w wersji 13 lub nowszej.
- CocoaPods (preferowane), Menedżer pakietów Swift lub pobrana kopia pakietu IMA DAI SDK dla tvOS.
- Aplikacja na tvOS, która ma już skonfigurowany pakiet IMA DAI SDK, umożliwia odtwarzanie strumieni wideo z reklamami DAI. Jeśli jeszcze nie masz takiej aplikacji, na początek możesz skorzystać z podstawowego przykładu tvOS DAI. BasicExample zawiera bazę kodu, do której odwołuje się ten przewodnik. Więcej informacji o implementowaniu pakietu IMA DAI SDK znajdziesz w krótkim przewodniku.
Konfigurowanie zmiennych wyświetlających bloki reklamowe
Wszystkie zmiany wymagane do wyświetlania podów są wprowadzane w ViewController.swift
w Swift lub ViewController.m
w Objective-C. Fragmenty w tym przewodniku
domyślnie używają języka Swift. Pierwszym krokiem jest aktualizacja
zmiennych stałych.
Oto stałe żądania strumienia bloku reklamowego, które musisz dodać:
STREAM_URL
(używany tylko w przypadku transmisji na żywo): adres URL strumienia wideo podany przez manipulator pliku manifestu lub partnera zewnętrznego, który korzysta z bloków reklamowych. Przed wysłaniem żądania powinno być wymagane wstawienie identyfikatora strumienia dostarczonego 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 Twojego konta Ad Managera 360.CUSTOM_ASSET_KEY
(używany tylko w transmisjach na żywo): niestandardowy klucz zasobu identyfikujący zdarzenie wyświetlania bloku reklamowego w usłudze Ad Manager 360. Można go utworzyć za pomocą manipulatora pliku 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 pobierania identyfikatora strumienia z pakietu IMA DAI SDK.
Zmień sekcję zmiennej w przykładzie tak, aby była zgodna z tym fragmentem:
...
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 strumienia bloku reklamowego na żywo lub VOD
Blok reklamowy w transmisjach na żywo
Zmodyfikuj metodę requestStream
, aby utworzyć żądanie strumienia bloków reklamowych na żywo, inicjując działanie 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 bloku reklamowego VOD, dodając 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 transmisji
Blok reklamowy w transmisjach na żywo
Zmodyfikuj metody IMAAdsLoaderDelegate
, używając parametru streamManager.streamId
, aby uzyskać identyfikator strumienia. Potem wstaw identyfikator strumienia do pola STREAM_URL
, zastępując "[[STREAMID]]"
. Po wprowadzeniu tej zmiany nowy adres URL transmisji będzie można ustawić za pomocą właściwości 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 parametru streamManager.streamId
, aby uzyskać identyfikator strumienia. Następnie poproś partnera dostarczającego technologie wideo o adres URL strumienia i wywołaj metodę IMAStreamManager.loadThirdPartyStream()
, aby pakiet IMA wczytał adres URL strumienia i wszelkie napisy zwrócone przez telewizor.
...
// 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. Za pomocą pakietu IMA DAI SDK dla systemu tvOS wysyłasz teraz żądania i wyświetlasz reklamy w strumieniu wyświetlania reklam w bloku reklamowym. Inne przykłady użycia pakietu IMA DAI SDK znajdziesz w przykładach na GitHubie.