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 do IMA DAI, 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 de seu interesse
Veiculação de conjunto DAI
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 do IMA DAI, 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.
Este guia demonstra como reproduzir uma transmissão de veiculação de conjunto DAI usando o SDK DAI do IMA com um player de vídeo para reprodução de transmissão ao vivo e VOD. Para conferir ou seguir um exemplo de integração concluída, faça o download do exemplo de veiculação de pods.
Visão geral da veiculação de conjunto DAI do IMA
StreamRequest
: um objeto que define uma solicitação de transmissão para os servidores de publicidade do Google. Precisa ser criado usandoImaSdkFactory.createPodStreamRequest()
ouImaSdkFactory.createPodVodStreamRequest()
para ativar a veiculação de pods. Esses métodos exigem um código de rede, ecreatePodStreamRequest
também exige uma chave de recurso personalizada e uma chave de API opcional. Ambos incluem outros parâmetros opcionais.StreamManager
: 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
Um app Android já configurado com o SDK da DAI do IMA para reproduzir streams de vídeo com anúncios da DAI. Se você ainda não tem um app assim, recomendamos usar o Android DAI BasicExample como ponto de partida. O BasicExample tem a base de código referenciada neste guia.
É importante que seu app envie eventos ID3 usando
VideoStreamPlayerCallback.onUserTextReceived()
para que o IMA DAI funcione. Confira este exemplo de snippet de código de DAI de serviço completo.
Configurar as variáveis de veiculação de conjunto
Todas as mudanças necessárias para a veiculação de pods são feitas em SampleAdsWrapper.java. A primeira etapa é atualizar as variáveis constantes.
Estas são as constantes de solicitação de fluxo de anúncios que precisam ser adicionadas:
STREAM_URL
: Unicamente usado para transmissões ao vivo: o URL do stream de vídeo fornecido pelo manipulador de manifesto ou parceiro terceirizado que usa a veiculação de conjuntos. 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 do fluxo inclui um marcador de posição,"[[STREAMID]]"
, que é substituído pelo ID do fluxo antes de fazer uma solicitação.NETWORK_CODE
: é o código de rede da sua conta do Ad Manager 360.CUSTOM_ASSET_KEY
: usado somente para transmissões ao vivo: a chave de recurso personalizada que identifica seu evento de veiculação de 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 DAI do IMA.
O Android DAI BasicExample foi projetado para reproduzir vários tipos de fluxo, mas, para a veiculação de pods, ele é configurado para reproduzir apenas um fluxo. Mude a seção de variável do exemplo para o seguinte:
/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {
// Podserving Stream Constants.
private static final String STREAM_URL =
"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]]";
private static final String NETWORK_CODE = "51636543";
private static final String CUSTOM_ASSET_KEY = "google-sample";
private static final String API_KEY = "";
private static final String PLAYER_TYPE = "DAISamplePlayer";
/** Log interface, so we can output the log commands to the UI or similar. */
public interface Logger {
...
Crie uma solicitação de transmissão de conjunto ao vivo ou VOD para ativar a veiculação de conjunto
Exibição de pods de transmissão ao vivo
O método buildStreamRequest()
foi removido, que era usado para alternar entre
a criação de vários tipos de stream. Em seguida, mude requestAndPlayAds()
para chamar
ImaSdkFactory.createPodStreamRequest()
e criar uma solicitação de anúncio de veiculação de pods
ao vivo. Por fim, solicite o stream usando AdsLoader.requestStream()
.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Veiculação de conjunto de stream VOD
O método buildStreamRequest()
foi removido, que era usado para alternar entre
a criação de vários tipos de stream. Em seguida, mude requestAndPlayAds()
para chamar
ImaSdkFactory.createPodVodStreamRequest()
e criar uma solicitação de anúncio de veiculação de
pods de VOD. Por fim, solicite o stream usando AdsLoader.requestStream()
.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Editar e definir o URL do stream
Exibição de pods de transmissão ao vivo
Chame StreamManager.getStreamId()
para conseguir o ID do stream. Em seguida, ele precisa ser
inserido no STEAM_URL
substituindo "[[STREAMID]]"
. Depois que essa mudança for
feita, o novo URL da transmissão poderá ser definido usando videoPlayer.setStreamUrl()
.
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
streamManager = event.getStreamManager();
streamManager.addAdErrorListener(this);
streamManager.addAdEventListener(this);
// To enable streams
String streamID = streamManager.getStreamId();
String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
streamManager.init();
videoPlayer.setStreamUrl(streamUrl);
videoPlayer.play();
}
Veiculação de conjunto de stream VOD
Chame StreamManager.getStreamId()
para conseguir o ID do stream. Em seguida, solicite um
URL de streaming ao seu parceiro de tecnologia de vídeo (VTP). Em seguida, chame
StreamManager.loadThirdPartyStream()
para que o IMA carregue o URL do stream e todos os
legendas retornadas pelo TVP.
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
streamManager = event.getStreamManager();
streamManager.addAdErrorListener(this);
streamManager.addAdEventListener(this);
// To enable streams
String streamID = streamManager.getStreamId();
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
String streamUrl = vtpInterface.requestStreamURL(streamID);
streamManager.init();
// Pass any subtitles returned by your VTP in this step as well.
streamManager.loadThirdPartyStream(streamUrl, subtitles);
}
Quando a veiculação de pods está ativada, o IMA não faz chamadas para
VideoStreamPlayer.loadUrl()
. Portanto, é possível remover todas as chamadas para
videoPlayer.setStreamUrl()
e videoPlayer.play()
.
Limpar recursos da DAI do IMA
Quando você terminar de solicitar e exibir anúncios em um fluxo de veiculação de pods
com o SDK DAI do IMA, sugerimos que limpe todos os recursos depois que a
sessão de veiculação de pods for concluída. Chame StreamManager.destroy()
para interromper a reprodução
do stream, parar todo o rastreamento de anúncios e liberar todos os recursos de stream carregados.
Para conferir outros exemplos de uso do SDK do Android, consulte exemplos no GitHub.