Os SDKs do IMA facilitam a integração de anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor de anúncios compatível com VAST e gerenciar a veiculação de anúncios nos seus apps. Com os SDKs do IMA DAI, os apps fazem uma solicitação de transmissão para anúncios e vídeos de conteúdo, seja VOD ou conteúdo ao vivo. O SDK retorna uma transmissão de vídeo combinada para que você não precise alternar entre o anúncio e o vídeo de conteúdo no app.
Selecione a solução de DAI de seu interesse
Veiculação de conjunto DAI
Este guia demonstra como reproduzir uma transmissão ao vivo ou VOD de veiculação de conjunto DAI usando o SDK DAI do IMA para tvOS com um player de vídeo. Para conferir ou seguir uma integração de exemplo concluída, faça o download do app de exemplo de pod (Obj C ou Swift).
Visão geral da veiculação de conjunto DAI do IMA
A implementação da veiculação de conjunto usando o SDK do IMA DAI para tvOS envolve dois componentes principais:
StreamRequest
: um objeto que define uma solicitação de transmissão para os servidores de publicidade do Google. Precisa ser criado usandoIMAPodStreamRequest
ouIMAPodVODStreamRequest
para ativar a veiculação de pods. Ambos os métodos exigem um código de rede, eIMAPodStreamRequest
também precisa de uma chave de recurso personalizada. Uma chave de API é opcional.IMAStreamManager
: um objeto que processa a comunicação entre o stream de vídeo e o SDK do IMA DAI, como acionar pings de rastreamento e encaminhar eventos de stream para o editor.
Pré-requisitos
Antes de começar, os seguintes itens são necessários:
- Xcode 13 ou mais recente.
- CocoaPods (preferido), Gerenciador de pacotes do Swift ou uma cópia salva do SDK do DAI do IMA para tvOS.
- Um app para tvOS já configurado com o SDK do IMA DAI para reproduzir streams de vídeo com anúncios DAI. Se você ainda não tem um app assim, recomendamos usar o Exemplo básico de DAI para tvOS como ponto de partida. O BasicExample tem a base de código referenciada neste guia. Para mais informações sobre como implementar o SDK do IMA DAI, consulte o guia de início rápido.
Configurar as variáveis de veiculação de conjunto
Todas as mudanças necessárias para a exibição de pods são feitas em ViewController.swift
no
Swift ou ViewController.m
no Objective-C. Os snippets neste guia
usam a linguagem Swift por padrão. A primeira etapa é atualizar as
variáveis constantes.
Estas são as constantes de solicitação de fluxo de blocos de anúncios a serem adicionadas:
STREAM_URL
(usado apenas para transmissões ao vivo): o URL do stream de vídeo fornecido pelo manipulador de manifesto ou parceiro externo que usa a veiculação de conjunto. Ele precisa exigir que você insira o ID do stream fornecido pelo SDK do IMA DAI antes de fazer uma solicitação. Nesse caso, o URL do stream inclui um marcador de posição,"[[STREAMID]]"
, que é substituído pelo ID do stream antes de fazer uma solicitação.NETWORK_CODE
: é o código de rede da sua conta do Ad Manager 360.CUSTOM_ASSET_KEY
(usado apenas para transmissões ao vivo): a chave de recurso personalizada que identifica seu evento de veiculação de pod no Ad Manager 360. Ele pode ser criado pelo manipulador de manifesto ou pelo parceiro de veiculação de pods de terceiros.API_KEY
(usado apenas para transmissões ao vivo): uma chave de API opcional que pode ser necessária para extrair um ID de transmissão do SDK do IMA DAI.
Mude a seção de variável do exemplo para o seguinte:
...
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?
...
Criar uma solicitação de transmissão de conjunto de anúncios ao vivo ou VOD
Disponibilização de pods de transmissão ao vivo
Modifique o método requestStream
para criar uma solicitação de transmissão de pod ao vivo
instanciando 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)
}
...
Veiculação de pod de stream VOD
Modifique o método requestStream
para criar uma solicitação de transmissão de pod de VOD
instanciando 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)
}
...
Editar e definir o URL do stream
Disponibilização de pods de transmissão ao vivo
Modifique os métodos IMAAdsLoaderDelegate
usando streamManager.streamId
para
pegar o ID do fluxo. Em seguida, insira o ID do stream no STREAM_URL
, substituindo
"[[STREAMID]]"
. Depois que essa mudança for feita, o novo URL do stream poderá ser
definido usando 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
}
...
Veiculação de pod de stream VOD
Modifique os métodos IMAAdsLoaderDelegate
usando streamManager.streamId
para
pegar o ID do fluxo. Em seguida, solicite um URL de stream do seu parceiro de tecnologia
de vídeo (VTP) e chame IMAStreamManager.loadThirdPartyStream()
para que o IMA
carregue o URL do stream e todas as legendas retornadas pelo 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
}
Pronto! Agora você pode solicitar e mostrar anúncios em um fluxo de veiculação de conjuntos com o SDK DAI do IMA para tvOS. Para conferir outros exemplos de uso do SDK do IMA DAI, consulte os exemplos no GitHub.