Os SDKs do IMA facilitam a integração de anúncios multimídia aos seus sites e aplicativos. Os SDKs do IMA podem solicitar anúncios de qualquer servidor compatível com VAST e gerenciar a reprodução de anúncios nos seus aplicativos. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de stream para anúncios e vídeos de conteúdo, sejam eles VOD ou ao vivo. Em seguida, o SDK retorna um stream de vídeo combinado para que você não precise alternar entre o anúncio e o conteúdo de vídeo no seu app.
Selecione a solução de DAI do seu interesse
DAI de veiculação de conjunto
Este guia demonstra como reproduzir um stream de VOD da Veiculação de conjunto DAI ao vivo ou VOD usando o SDK de DAI do IMA para tvOS com um player de vídeo simples. Se você quiser acompanhar uma amostra concluída, faça o download do app de exemplo de disponibilização de pods (Obj C ou Swift).
Visão geral da veiculação de conjunto de DAI do IMA
A implementação da veiculação de conjuntos usando o SDK de DAI do IMA para tvOS envolve dois componentes principais:
StreamRequest
: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. Precisa ser criado usandoIMAPodStreamRequest
ouIMAPodVODStreamRequest
para ativar a disponibilização de pods. Os dois métodos exigem um código de rede, eIMAPodStreamRequest
também precisa de uma chave de recurso personalizada. Uma chave de API é opcional.IMAStreamManager
: objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, por exemplo, dispara pings de rastreamento e encaminha eventos de stream ao editor.
Pré-requisitos
Antes de começar, os seguintes itens são necessários:
- Xcode 13 ou mais recente.
- CocoaPods (preferencial), Gerenciador de pacotes do Swift ou uma cópia salva do SDK de DAI do IMA para tvOS (em inglês).
- Um app tvOS já configurado com o SDK de DAI do IMA para reproduzir streams de vídeo com anúncios da DAI. Se você ainda não tem um app desse tipo, recomendamos usar o BasicExample da DAI para tvOS como ponto de partida. O BasicExample tem a base de código mencionada neste guia. Para mais informações sobre como implementar o SDK de DAI do IMA, consulte o Guia de início rápido.
Configurar as variáveis de veiculação de pods
Todas as alterações necessárias para a disponibilização de pods são feitas em ViewController.swift
no
Swift ou ViewController.m
no Objective-C. O padrão dos snippets neste guia
é usar a linguagem Swift. O primeiro passo é atualizar
as variáveis constantes.
Estas são as constantes de solicitação de stream do conjunto de anúncios a serem adicionadas:
STREAM_URL
(usado somente para transmissões ao vivo): o URL do stream de vídeo fornecido pelo manipulador de manifesto ou parceiro terceirizado que usa a veiculação de conjuntos. Você precisa inserir o ID de stream fornecido pelo SDK de DAI do IMA antes de fazer uma solicitação. Nesse caso, o URL do stream inclui um marcador,"[[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
(usada somente para transmissões ao vivo): a chave de recurso personalizada que identifica o evento de veiculação de conjunto no Ad Manager 360. Isso pode ser criado pelo seu manipulador de manifesto ou parceiro terceirizado de veiculação de pods.API_KEY
(usada somente para transmissões ao vivo): uma chave de API opcional que pode ser necessária para recuperar um ID de stream do SDK de DAI do IMA.
Mude a seção de variáveis do exemplo para corresponder ao 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 ao vivo ou VOD
Veiculação de conjuntos de transmissão ao vivo
Modifique o método requestStream
para criar uma solicitação de stream 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 conjuntos de streams de VOD
Modifique o método requestStream
para criar uma solicitação de stream de pod 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 da transmissão
Veiculação de conjuntos de transmissão ao vivo
Modifique os métodos IMAAdsLoaderDelegate
usando streamManager.streamId
para
receber 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 conjuntos de streams de VOD
Modifique os métodos IMAAdsLoaderDelegate
usando streamManager.streamId
para
receber o ID do fluxo. Em seguida, solicite um URL de transmissão ao seu parceiro de tecnologia de vídeo (VTP, na sigla em inglês) e chame IMAStreamManager.loadThirdPartyStream()
para que o IMA carregue o URL da transmissão e 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ê está solicitando e exibindo anúncios em um stream de veiculação de conjunto com o SDK de DAI do IMA para tvOS. Para ver outros exemplos de uso do SDK de DAI do IMA, consulte as amostras no GitHub.