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 reprodução de anúncios nos seus apps. 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 gerenciar a troca entre o anúncio e o vídeo de conteúdo no app.
Selecione a solução de DAI que você quer usar
DAI de veiculação de conjunto
Este guia mostra como reproduzir um stream ao vivo ou VOD de veiculação de conjunto DAI usando o SDK de DAI do IMA para tvOS com um player de vídeo. Para conferir ou seguir um exemplo de integração concluído, baixe o app de exemplo Pod Serving (Obj C ou Swift).
Visão geral da Veiculação de conjunto DAI da IMA
A implementação da Veiculação de conjunto usando o SDK DAI do IMA para tvOS envolve dois componentes principais:
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 o disparo de pings de rastreamento e o encaminhamento de eventos de stream para o editor.
Pré-requisitos
Antes de começar, os seguintes itens são necessários:
- Xcode 13 ou versões mais recentes.
- CocoaPods (preferencial), Gerenciador de pacotes do Swift ou uma cópia baixada do SDK da DAI do IMA para tvOS.
- Um app tvOS já configurado com o SDK DAI do IMA para reproduzir streams de vídeo com anúncios de DAI. Se você ainda não tiver um app assim, recomendamos usar o tvOS DAI BasicExample como um ponto de partida. O BasicExample tem a base de código referenciada neste guia. Para mais informações sobre como implementar o SDK DAI do IMA, 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
em
Swift ou ViewController.m
em Objective-C. Os snippets neste guia
usam a linguagem Swift por padrão. A primeira etapa é atualizar as variáveis constantes.
Confira as constantes de solicitação de stream de bloco de anúncios que precisam ser adicionadas:
STREAM_URL
(usado apenas em transmissões ao vivo): o URL de stream de vídeo fornecido pelo manipulador de manifesto ou parceiro terceirizado usando a veiculação de conjunto. Ele deve exigir que você insira o ID de 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
(usada somente em transmissões ao vivo): a chave de recurso personalizada que identifica seu evento de veiculação de pods no Ad Manager 360. Ele pode ser criado pelo gerenciador de manifesto ou por um parceiro terceirizado de veiculação de pods.API_KEY
(usada apenas em transmissões ao vivo): uma chave de API opcional que pode ser necessária para recuperar um ID de transmissão do SDK do IMA DAI.
Mude a seção de variáveis do exemplo para corresponder ao seguinte:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
Criar uma solicitação de stream de podcast ao vivo ou de VOD
Disponibilização de pods de transmissões ao vivo
Modifique o método requestStream
para criar uma solicitação de transmissão de pod ativo
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 stream 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
Disponibilização de pods 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 fluxo em STREAM_URL
, substituindo "[[STREAMID]]"
. Depois que essa mudança 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, peça um URL de stream ao seu parceiro de tecnologia de vídeo (VTP) e chame IMAStreamManager.loadThirdPartyStream()
para que a IMA carregue o URL de stream e as legendas retornadas pelo seu 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
}
Limpar recursos da DAI da IMA
Quando você terminar de solicitar e exibir anúncios em um fluxo de veiculação de
pod com o SDK de DAI do IMA, recomendamos que você limpe todos os recursos após a
conclusão da sessão de veiculação de pod. Chame IMAStreamManager.destroy()
para interromper a
reprodução de stream, parar todo o rastreamento de anúncios e liberar todos os recursos de stream
carregados.
Para ver outros exemplos do uso do SDK do tvOS, consulte exemplos no GitHub.