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 de DAI do IMA, 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 do seu interesse
Veiculação de DAI do pod
Este guia demonstra como reproduzir um stream de disponibilização de pod DAI ao vivo ou VOD usando o SDK de DAI do IMA para tvOS com um player de vídeo simples. Se quiser seguir junto com uma amostra completa, 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 DAI do IMA
A implementação da veiculação de pods usando o SDK de DAI do IMA para tvOS envolve duas etapas componentes:
StreamRequest
: um objeto que define uma solicitação de stream para servidores de publicidade do Google. Precisa ser criado usandoIMAPodStreamRequest
ouIMAPodVODStreamRequest
para ativar a veiculaçã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
: 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 baixada da 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 da 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 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. Os snippets neste guia
usam o Swift como padrão. A primeira etapa é atualizar
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 de stream de vídeo fornecido pelo o manipulador de manifesto ou um parceiro terceirizado usando 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 de 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. 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.
Altere a seção de variável 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 de anúncios ao vivo ou VOD
Veiculação de conjuntos de transmissões 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 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 da transmissão
Veiculação de conjuntos de transmissões 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 alteração for feita, o novo URL de transmissão 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
receber 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 exibindo anúncios em um fluxo de veiculação de conjunto com o SDK de DAI do IMA para tvOS. Para conferir outros exemplos de uso do SDK do IMA DAI, consulte os exemplos no GitHub.