A especificação de anúncios intersticiais HLS apresenta uma maneira flexível de programar e inserir anúncios em um stream de vídeo ou áudio. Com a abordagem do lado do cliente, seu aplicativo assume o controle total de quando solicitar e reproduzir os intervalos
de publicidade criando a classe
AVPlayerInterstitialEvent. Essa abordagem não exige as tags EXT-X-DATERANGE nos manifestos de
fluxo de conteúdo. Com os intersticiais HLS do lado do cliente, é possível inserir anúncios dinamicamente
em qualquer conteúdo, sem precisar modificar o manifesto de stream ou os arquivos de mídia.
Este guia aborda a integração do SDK do Interactive Media Ads (IMA) em um app player de vídeo que cria uma sessão de transmissão ao vivo de inserção de anúncios guiada pelo servidor (SGAI) e programa intersticiais do lado do cliente. Para mais informações, consulte DAI guiada pelo servidor.
Pré-requisitos
Antes de começar, os seguintes itens são necessários:
Um novo projeto do Xcode, usando
Storyboardpara a interface do usuário. Para mais informações, consulte Como criar um projeto do Xcode para um app.SDK do IMA do Google. Para mais informações, consulte Configurar o SDK do IMA para DAI.
Os seguintes parâmetros para sua solicitação de transmissão ao vivo de DAI:
NETWORK_CODE: seu código de rede do Google Ad Manager.CUSTOM_ASSET_KEY: sua string personalizada que identifica o evento de transmissão ao vivo da DAI. O evento de transmissão ao vivo precisa ter o tipo de DAI de manifesto de veiculação de conjunto.
Configurar um storyboard
No arquivo iPhone.storyboard, faça o seguinte:
- Crie um objeto
UIViewcomo um contêiner para o player de vídeo e a interface do anúncio. - Crie uma propriedade
adUIViewda classeViewControllerpara se conectar ao objetoUIView. - No objeto
adUIView, crie umUIButtonpara funcionar como um botão de reprodução. - Crie uma propriedade
playButtonda classeViewControllerpara se conectar com o objetoUIButtone uma funçãoonPlayButtonTouchpara processar toques do usuário.
Inicializar um carregador de anúncios
No evento viewDidLoad do controlador de visualização principal, faça o seguinte:
- Configure um player de vídeo usando as classes
AVPlayereAVPlayerLayer. - Crie objetos
IMAAdDisplayContainereIMAAVPlayerVideoDisplay. O contêiner de exibição de anúncios especifica oadUIViewpara o SDK de DAI do IMA inserir as subvisualizações da interface do anúncio. O objeto de exibição de vídeo atua como uma ponte entre a lógica de anúncios do SDK do IMA DAI e o sistema de reprodução AVFoundation, rastreando a reprodução de anúncios em vídeo. - Inicialize o objeto
IMAAdsLoadercom as configurações de reprodução de anúncios e localização da interface do usuário de anúncios.
O exemplo a seguir inicializa um carregador de anúncios com um objeto
IMASettings
vazio:
Fazer uma solicitação de stream
Para solicitar anúncios para um stream de conteúdo, crie um objeto
IMAPodStreamRequest
e transmita-o para sua instância
IMAAdsLoader. Opcionalmente, defina a propriedade adTagParameters para fornecer opções de DAI
e parâmetros de segmentação para seu stream.
Este exemplo chama o método loadAdStream no evento viewDidAppear:
No app de produção, chame o método loadAdStream depois que o usuário selecionar um
fluxo de conteúdo.
Processar eventos de carregamento de stream
Implemente o protocolo
IMAAdsLoaderDelegate
para processar o sucesso ou a falha da solicitação de stream:
- Se a solicitação for bem-sucedida, você vai receber um objeto
IMAAdsLoadedDataque contém oIMAStreamManager. Armazena o valorstreamManager.streamIdpara a sessão atual da DAI. - Em caso de falha, registre o erro.
O exemplo a seguir processa o evento de carregamento de stream e registra o evento de falha no carregamento do stream:
Programar inserções de anúncios
Para programar um intervalo comercial, crie um objeto
AVPlayerInterstitialEvent. Defina a propriedade templateItems do objeto de evento como uma matriz de objetos
AVPlayerItem, em que cada objeto de item contém um URL de manifesto de pod de anúncio.
Para criar um URL de manifesto de pod de anúncio, siga a documentação Método: manifesto de pod HLS.
Para fins de demonstração, o exemplo a seguir gera uma string de identificador de pod
usando o horário atual da transmissão ao vivo de conteúdo. A função generatePodIdentifier
retorna o identificador do pod como ad_break_id/mid-roll-{minute}.
No app de produção, recupere o identificador do pod de uma fonte que forneça valores únicos para cada intervalo de anúncio, sincronizados para todos os espectadores da transmissão ao vivo.
O exemplo a seguir programa um intervalo de anúncio para começar nos próximos dois minutos depois que o usuário clicar no botão de reprodução:
O método scheduleAdInsertion calcula o horário de início do intervalo de anúncio e cria um URL de manifesto de conjunto de anúncios. Use
esse URL para criar um objeto AVPlayerInterstitialEvent.
Se quiser, use a struct AVPlayerInterstitialEvent.Restrictions para restringir a capacidade do usuário de pular ou voltar durante a reprodução do anúncio.
Processar eventos de anúncio
Para processar eventos de anúncios, implemente o protocolo
IMAStreamManagerDelegate. Assim, você pode acompanhar quando os intervalos começam e terminam, além de receber informações sobre anúncios individuais.
Execute o app. Se tudo der certo, você poderá solicitar e veicular anúncios intersticiais usando um fluxo de manifesto de veiculação de pods.