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, seja VOD ou conteúdo 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 uma transmissão ao vivo ou VOD de veiculação de conjunto DAI usando o SDK do IMA DAI 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 usandoIMAPodStreamRequestouIMAPodVODStreamRequestpara ativar a veiculação de pods. Os dois métodos exigem um código de rede, eIMAPodStreamRequesttambé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.
- Método para instalar o SDK do IMA:
- Gerenciador de pacotes do Swift (preferencial)
- CocoaPods
- Uma cópia para download do SDK 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
Faça todas as mudanças para a veiculação de pods em ViewController.swift em
Swift ou ViewController.m em Objective-C. Os snippets neste guia usam o Swift por padrão. A primeira etapa é atualizar as variáveis constantes.
Adicione as seguintes constantes de solicitação de stream de pod de anúncio:
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 precisa 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 você substitui 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 apenas em transmissões ao vivo): a chave de recurso personalizada que identifica seu evento de veiculação de pods no Ad Manager 360. Seu manipulador de manifesto ou parceiro de veiculação de pods terceirizado pode criar isso.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 pod de transmissão 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 pod 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 fluxo em STREAM_URL, substituindo "[[STREAMID]]". Depois de fazer essa mudança, defina o novo URL de stream 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 todas 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 pods com o SDK da DAI do IMA, recomendamos que limpe todos os recursos após a conclusão da sessão de veiculação de pods. 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.