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 compatível com VAST e gerenciar a reprodução de anúncios nos seus apps. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de streaming para anúncio e conteúdo de vídeo, 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 do seu interesse
Veiculação de conjunto DAI
Este guia demonstra como reproduzir um stream de 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 quiser seguir um exemplo completo, faça o download do app de exemplo de fornecimento de pods (Obj C ou Swift).
Visão geral da veiculação de conjunto DAI do IMA
A implementação do pod 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 (preferencial), Gerenciador de pacotes do Swift ou uma cópia transferida por download do SDK de DAI do IMA para tvOS (em inglês).
- Um app para tvOS já configurado com o SDK do IMA DAI para reproduzir streams de vídeo com anúncios DAI. Caso você ainda não tenha um app desse tipo, recomendamos usar o BasicExample 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 do pod
Todas as mudanças necessárias para a veiculação de pods são feitas em ViewController.swift
no
Swift ou ViewController.m
no Objective-C. Por padrão, os snippets deste guia
usam a linguagem Swift. A primeira etapa é atualizar as
variáveis constantes.
Estas são as constantes de solicitação de stream do conjunto de anúncios que serão adicionadas:
STREAM_URL
(usado apenas para transmissões ao vivo): o URL do stream de vídeo fornecido pelo manipulador de manifesto ou pelo parceiro externo que usa a veiculação de pods. 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 de 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
(usado apenas para transmissões ao vivo): a chave de recurso personalizada que identifica o evento de veiculação do seu pod no Ad Manager 360. Isso pode ser criado pelo manipulador de manifesto ou pelo parceiro terceirizado de veiculação de pod.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 ao vivo ou de VOD
Veiculação de conjuntos de transmissões ao vivo
Modifique o método requestStream
para criar uma solicitação de stream do 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 conjunto de stream de 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
Veiculação de conjunto 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 conjunto de stream de 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ê está solicitando e veiculando anúncios em um fluxo de veiculação de pods com o SDK do IMA DAI para tvOS. Para ver outros exemplos de uso do SDK de DAI do IMA, consulte as amostras no GitHub (link em inglês).