Começar a usar o SDK de DAI do IMA

Selecione a solução de DAI do seu interesse

DAI de serviço completo

Este guia demonstra como reproduzir um stream de DAI usando o SDK de DAI do IMA CAF. Para conferir ou acompanhar uma integração de amostra completa, faça o download do exemplo.

Antes de usar este guia, familiarize-se com o protocolo Web Receiver do framework de aplicativos do Chromecast. Este guia pressupõe um nível básico de familiaridade com os conceitos de receptor do CAF, como interceptores de mensagem e objetos mediaInformation, bem como familiaridade com o uso da ferramenta Cast Command and Control para emular um remetente de CAF.

Para usar a DAI do IMA, você precisa ter uma conta do Ad Manager 360. Se você tiver uma conta do Ad Manager, entre em contato com o gerente de contas para mais detalhes. Para informações sobre como se inscrever no Ad Manager, acesse a Central de Ajuda do Ad Manager.

Para informações sobre a integração com outras plataformas ou sobre o uso de SDKs do lado do cliente do IMA, consulte SDKs do Interactive Media Ads.

Visão geral da DAI do CAF

A implementação da DAI usando o SDK de DAI do IMA CAF envolve dois componentes principais, conforme demonstrado neste guia:

  • StreamRequest: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. Há duas variedades principais de solicitações de stream:

    • LiveStreamRequest: especifica uma Chave de recurso e uma chave de API opcional, bem como outros parâmetros opcionais.
    • VODStreamRequest: especifica um ID da origem do conteúdo, um ID do vídeo e uma chave de API opcional, além de outros parâmetros opcionais.
  • StreamManager: um objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparo de pings de rastreamento e encaminhamento de eventos de stream para o editor.

Pré-requisitos

Configurar os objetos MediaInfo do remetente

Primeiro, configure o objeto MediaInfo do app remetente para incluir os seguintes campos:

contentId Um identificador exclusivo para este item de mídia
contentUrl O URL de stream substituto a ser carregado se o StreamRequest da DAI falhar por qualquer motivo
streamType Para transmissões ao vivo, esse valor precisa ser definido como "LIVE". Para transmissões VOD, ele precisa ser definido como "BUFFERED".
customData assetKey Somente transmissões ao vivo. Identifica a transmissão ao vivo a ser carregada
contentSourceId Somente transmissões de VOD. Identifica o feed de mídia que contém o stream solicitado.
videoId Somente transmissões de VOD. Identifica o stream solicitado no feed de mídia especificado.
ApiKey Uma chave de API opcional que pode ser necessária para recuperar o URL de stream do SDK de DAI do IMA
senderCanSkip Um valor booleano para informar ao destinatário se o dispositivo de envio pode exibir um botão "Pular", permitindo o suporte a anúncios puláveis

Para configurar esses valores na ferramenta de comando e controle do cast, clique na guia Load Media e defina o tipo de solicitação de carregamento personalizado como LOAD. Em seguida, substitua os dados JSON na área de texto por um dos seguintes objetos JSON:

AO VIVO

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

VOD

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

Esse objeto de solicitação de carregamento personalizado pode ser enviado ao receptor para testar as etapas a seguir.

Criar um receptor CAF básico

Seguindo o Guia básico do receptor do SDK CAF, crie um receptor da Web básico.

O código do receptor vai ficar assim:

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    cast.framework.CastReceiverContext.getInstance().start();
  </script>
</body>
</html>

Importar o SDK de DAI do IMA e acessar o Gerenciador de player

Adicione uma tag de script a fim de importar o SDK de DAI do IMA para o CAF para seu receptor da Web, logo após o script carregar o CAF. O SDK de DAI do CAF é permanente, portanto, não é necessário definir uma versão específica. Em seguida, na tag de script a seguir, armazene o contexto do receptor e o gerenciador do player como constantes antes de iniciar o receptor.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();

    castContext.start();
  </script>
</body>
</html>

Inicializar o Gerenciador de streams do IMA

Inicialize o Gerenciador de streams do SDK da DAI do CAF.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    castContext.start();
  </script>
</body>
</html>

Criar o interceptador de mensagens de carregamento

O SDK de DAI do CAF usa o interceptador de mensagens de carregamento do CAF para fazer solicitações de stream e substituir o URL de conteúdo pelo stream da DAI final. O interceptador de mensagens chama streamManager.requestStream(), que processa a definição dos intervalos de anúncio, a solicitação do stream e a substituição do contentURL existente.

Só pode haver um interceptador de mensagens de carregamento. Portanto, se o app exigir o uso do interceptador, será necessário incorporar funções personalizadas no mesmo callback.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => null;

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                this.broadcast('Stream request successful.');
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

Criar a solicitação de stream

Para concluir a integração da DAI do CAF, é preciso criar a solicitação de stream usando os dados incluídos no objeto mediaInfo do remetente.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imaRequestData.ApiKey) {
        streamRequest.ApiKey = imaRequestData.ApiKey;
      }
      if (streamRequest && imaRequestData.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

Agora é possível solicitar e reproduzir streams de DAI com o SDK de DAI do CAF do Google. Para saber mais sobre recursos mais avançados do SDK, consulte os outros guias ou faça o download dos nossos aplicativos receptores de exemplo.