Cómo comenzar a usar el SDK de IMA de DAI

Seleccione la solución de DAI que le interesa

DAI de servicio completo

En esta guía, se muestra cómo reproducir una transmisión de DAI con el SDK de DAI de CAF de IMA. Si deseas ver o seguir una integración de muestra completa, descarga el ejemplo.

Antes de usar esta guía, asegúrate de familiarizarte con el protocolo del receptor web del marco de trabajo de aplicaciones de Chromecast. En esta guía, se asume que conoces los conceptos básicos del receptor de CAF, como los interceptores de mensajes y los objetos mediaInformation, y que conoces el uso de la herramienta de comando y control de transmisión para emular un remitente de CAF.

Para usar la DAI de IMA, debes tener una cuenta de Ad Manager 360. Si tienes una cuenta de Ad Manager, comunícate con tu administrador de cuentas para obtener más detalles. Si quieres obtener información para registrarte en Ad Manager, visita el Centro de ayuda de Ad Manager.

Para obtener información sobre la integración en otras plataformas o el uso de los SDK de IMA del cliente, consulta SDKs de anuncios multimedia interactivos.

Descripción general de la DAI de CAF

La implementación de DAI con el SDK de DAI de IMA CAF implica dos componentes principales, como se muestra en esta guía:

  • StreamRequest: Es un objeto que define una solicitud de transmisión para los servidores de publicidad de Google. Las solicitudes de transmisión se dividen en dos variedades principales:

    • LiveStreamRequest: Especifica una clave de recurso y una clave de API opcional, así como otros parámetros opcionales.
    • VODStreamRequest: Especifica un ID de fuente de contenido, un ID de video y una clave de API opcional, así como otros parámetros opcionales.
  • StreamManager: Es un objeto que controla la comunicación entre la transmisión de video por Internet y el SDK de DAI de IMA, como activar pings de seguimiento y reenviar eventos de transmisión al publicador.

Requisitos previos

Cómo configurar los objetos MediaInfo del remitente

Primero, configura el objeto MediaInfo de la app emisora para incluir los siguientes campos:

contentId Un identificador único para este elemento multimedia
contentUrl La URL de transmisión de resguardo que se cargará si DAI StreamRequest falla por algún motivo
streamType Para las transmisiones en vivo, este valor se debe establecer como "LIVE". Para las transmisiones de VOD, este valor se debe establecer como "BUFFERED"
customData assetKey Solo transmisiones en vivo. Identifica la transmisión en vivo que se cargará
contentSourceId Solo para transmisiones de VOD. Identifica el feed de contenido multimedia que contiene la transmisión solicitada.
videoId Solo para transmisiones de VOD. Identifica la transmisión solicitada dentro del feed multimedia especificado.
ApiKey Una clave de API opcional que se puede requerir para recuperar la URL de transmisión desde el SDK de DAI de IMA
senderCanSkip Es un valor booleano que le informa al receptor si el dispositivo que lo envía puede mostrar un botón de omisión, lo que habilita la compatibilidad con anuncios que se pueden omitir.

Para configurar estos valores en la herramienta de comando y control de transmisión, haz clic en la pestaña Load Media y establece el tipo de solicitud de carga personalizada en LOAD. Luego, reemplaza los datos JSON en el área de texto por uno de los siguientes objetos JSON:

EN 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"
}

Este objeto de solicitud de carga personalizado se puede enviar al receptor para probar los siguientes pasos.

Crea un receptor de CAF básico

Con la Guía básica para receptores del SDK de CAF, crea un receptor web básico.

El código del receptor debería verse de la siguiente manera:

<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>

Importe el SDK de IMA de DAI y obtenga el Administrador del reproductor

Agrega una etiqueta de secuencia de comandos para importar el SDK de IMA de DAI para CAF a tu receptor web, justo después de cargar el CAF de la secuencia de comandos. El SDK de DAI de CAF es perdurable, por lo que no es necesario establecer una versión específica. Luego, en la etiqueta de secuencia de comandos que aparece a continuación, almacena el contexto del receptor y el administrador del jugador como constantes antes de iniciar el 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>

Cómo inicializar el Administrador de transmisiones de IMA

Inicializa el Administrador de transmisiones del SDK de DAI de 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>

Crea el interceptor de mensajes de carga

El SDK de DAI de CAF usa el interceptor de mensajes de carga de CAF para realizar solicitudes de transmisión y reemplazar la URL de contenido por la transmisión de DAI final. El interceptor de mensajes llama a streamManager.requestStream(), que se encarga de configurar las pausas publicitarias, solicitar la transmisión y reemplazar el contentURL existente.

Solo puede haber un interceptor de mensajes de carga, por lo que, si tu app requiere el uso del interceptor, debes incorporar cualquier función personalizada en la misma devolución de llamada.

<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>

Compila la solicitud de transmisión

Para completar la integración de la DAI de CAF, debes compilar tu solicitud de transmisión con los datos que se incluyeron en el objeto mediaInfo del remitente.

<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>

Ahora puedes solicitar y reproducir transmisiones de DAI con el SDK de CAF DAI de Google. Para obtener información sobre funciones del SDK más avanzadas, consulta las otras guías o descarga nuestras aplicaciones receptoras de muestra.