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 da DAI usando o SDK de DAI do IMA CAF. Se você gostaria de visualizar ou acompanhar um exemplo completo de integração, faça o download do exemplo.

Antes de usar este guia, familiarize-se com os recursos do Chromecast protocolo do receptor da Web do framework do aplicativo Isso pressupõe um nível básico de familiaridade com os conceitos do receptor CAF, como mensagem interceptadores e mediaInformation objetos, além da familiaridade com o comando e controle do Cast para emular um remetente de CAF.

Para usar a DAI do IMA, é preciso ter uma conta do Ad Manager 360. Se você tiver um anúncio Conta de administrador. Entre em contato com o gerente de contas para mais detalhes. Para informações sobre a inscrição no Ad Manager, acesse a Ajuda do Ad Manager de Ajuda.

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

Visão geral da DAI do CAF

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

  • StreamRequest: Um objeto que define uma solicitação de stream para os servidores de publicidade do Google. As solicitações de stream têm duas variedades principais:

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

Pré-requisitos

Configurar os objetos MediaInfo do remetente

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

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

Para configurar esses valores na ferramenta de comando e controle de transmissão, clique no botão Carregar Media (em inglês) e defina o tipo de solicitação de carregamento personalizado como LOAD. Em seguida, substitua Dados JSON na área de texto com 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 a etapas seguintes.

Criar um receptor CAF básico

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

O código do seu 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 para importar o SDK de DAI do IMA para CAF ao seu receptor da Web. após o carregamento do script no CAF. O SDK de DAI do CAF é permanente, então não é necessário para definir uma versão específica. Na tag de script a seguir, armazene os 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

Inicializar o stream do SDK de DAI do CAF de usuário.

<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 a mensagem de carregamento do CAF interceptador para fazer solicitações de stream e substituir o URL de conteúdo pelo stream da DAI final. O interceptador da mensagem chama streamManager.requestStream(), que processa a definição de intervalos de anúncio, a solicitação do stream e a substituição da contentURL

Só pode haver um interceptador de mensagens de carregamento, portanto, se o app exigir o uso do interceptador, você precisa incorporar funções personalizadas no mesmo o retorno de chamada.

<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, você precisa criar seu stream solicitação 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 para CAF do Google. Para saber mais sobre recursos avançados do SDK, consulte os outros guias ou faça o download do nosso receptor de amostra aplicativos.