Começar a usar o SDK de DAI do IMA

Com os SDKs do IMA, é fácil integrar anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor 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 streaming para anúncio e conteúdo de vídeo, 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 alternância entre anúncios e vídeos de conteúdo no seu app.

Selecione a solução de DAI do seu interesse

DAI de veiculação de conjuntos

Com os SDKs do IMA, é fácil integrar anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor 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 streaming para anúncio e conteúdo de vídeo, 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 alternância entre anúncios e vídeos de conteúdo no seu app.

Este guia demonstra como reproduzir um stream de Veiculação de conjunto DAI usando o SDK de DAI do IMA com um player de vídeo simples para reprodução de stream ao vivo e VOD. Se você quiser visualizar ou acompanhar um exemplo completo de integração, faça o download do exemplo de disponibilização de pods.

Visão geral da veiculação de conjunto DAI do IMA

  • StreamRequest: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. Precisa ser criado usando ImaSdkFactory.createPodStreamRequest() ou ImaSdkFactory.createPodVodStreamRequest() para ativar a disponibilização de pods. Esses métodos exigem um código de rede, e createPodStreamRequest também requer uma chave de recurso personalizada e uma chave de API opcional. Ambos incluem outros parâmetros opcionais.

  • StreamManager: objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparar pings de rastreamento e encaminhar eventos de stream ao editor.

Pré-requisitos

Configurar as variáveis de disponibilização de pods

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 stream do conjunto de anúncios que serão adicionadas:

  • STREAM_URL: usado somente para transmissões ao vivo, é o URL de stream de vídeo fornecido pelo manipulador de manifesto ou pelo parceiro terceirizado que usa a veiculação de conjunto. É necessário que você insira o ID de stream fornecido pelo SDK de DAI do IMA antes de fazer uma solicitação. Nesse caso, o URL de stream inclui um marcador, "[[STREAMID]]", que é substituído pelo ID do stream antes de fazer uma solicitação.

  • NETWORK_CODE: o código da rede da conta do Ad Manager 360.

  • CUSTOM_ASSET_KEY (usada somente para transmissões ao vivo): é a chave de recurso personalizada que identifica o evento de veiculação do conjunto no Ad Manager 360. Isso pode ser criado pelo manipulador de manifesto ou pelo parceiro terceirizado de veiculação de pod.

  • API_KEY (usado somente para transmissões ao vivo): é uma chave de API opcional que pode ser necessária para recuperar um ID de stream do SDK de DAI do IMA.

O BasicExample da DAI do Android foi projetado para reproduzir vários tipos de streaming diferentes, mas, para a disponibilização de conjuntos, ele é configurado para reproduzir um único stream. Altere a seção de variável do exemplo para corresponder ao 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 stream de conjunto ao vivo ou de VOD para ativar a veiculação de conjuntos

Veiculação de conjunto de transmissão ao vivo

Remova o método buildStreamRequest() que foi usado para alternar entre a criação de diversos tipos de stream. Em seguida, mude requestAndPlayAds() para chamar ImaSdkFactory.createPodStreamRequest() e criar uma solicitação de anúncio de veiculação de conjunto em tempo real. 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 de VOD

Remova o método buildStreamRequest() que foi usado para alternar entre a criação de diversos tipos de stream. Em seguida, mude requestAndPlayAds() para chamar ImaSdkFactory.createPodVodStreamRequest() e criar uma solicitação de anúncio de veiculação de conjunto 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 da transmissão

Veiculação de conjunto de transmissão ao vivo

Chame StreamManager.getStreamId() para receber o ID de stream. Em seguida, ele precisa ser inserido no STEAM_URL, substituindo "[[STREAMID]]". Depois que essa alteração é feita, o novo URL de stream pode 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 de VOD

Chame StreamManager.getStreamId() para receber o ID de stream. Em seguida, solicite um URL de stream do seu parceiro de tecnologia de vídeo (VTP, na sigla em inglês). Em seguida, chame StreamManager.loadThirdPartyStream() para que o IMA carregue o URL de stream e todas as legendas retornadas pela 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 qualquer chamada para videoPlayer.setStreamUrl() e videoPlayer.play().

Pronto! Agora você está solicitando e exibindo anúncios em um stream de veiculação de conjunto com o SDK de DAI do IMA. Para ver outros exemplos do SDK do Android em uso, consulte as amostras no GitHub.