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

Los SDKs de IMA facilitan la integración de anuncios multimedia en tus sitios web y apps. Los SDKs de IMA pueden solicitar anuncios de cualquier servidor de anuncios que cumpla con VAST y administrar la reproducción de anuncios en tus apps. Con los SDKs de DAI de IMA, las apps realizan una solicitud de transmisión de anuncios y videos de contenido, ya sea VOD o contenido en vivo. Luego, el SDK muestra una transmisión de video combinada para que no tengas que administrar el cambio entre el video de anuncios y el de contenido dentro de tu app.

Selecciona la solución de DAI que te interesa

Publicación de grupos de anuncios de DAI

Los SDKs de IMA facilitan la integración de anuncios multimedia en tus sitios web y apps. Los SDKs de IMA pueden solicitar anuncios de cualquier servidor de anuncios que cumpla con VAST y administrar la reproducción de anuncios en tus apps. Con los SDKs de DAI de IMA, las apps realizan una solicitud de transmisión de anuncios y videos de contenido, ya sea VOD o contenido en vivo. Luego, el SDK muestra una transmisión de video combinada para que no tengas que administrar el cambio entre el video de anuncios y el de contenido dentro de tu app.

En esta guía, se muestra cómo reproducir una transmisión de Publicación de grupos de anuncios de DAI con el SDK de IMA DAI con un reproductor de video para la reproducción de transmisiones en vivo y de VOD. Para ver o seguir una integración de muestra completada, descarga el ejemplo de Publicación de pods.

Descripción general de la Publicación de grupos de anuncios de DAI de IMA

  • StreamRequest: Es un objeto que define una solicitud de transmisión a los servidores de publicidad de Google. Se debe crear con ImaSdkFactory.createPodStreamRequest() o ImaSdkFactory.createPodVodStreamRequest() para habilitar la publicación de Pods. Estos métodos requieren un código de red y createPodStreamRequest también requiere una clave de activo personalizado y una clave de API opcional. Ambos incluyen otros parámetros opcionales.

  • StreamManager: Es un objeto que controla la comunicación entre la transmisión de video y el SDK de DAI de IMA, como activar pings de seguimiento y reenviar eventos de transmisión al publicador.

Requisitos previos

Configura tus variables de publicación de grupos de anuncios

Todos los cambios necesarios para la publicación de grupos de anuncios se realizan en SampleAdsWrapper.java. El primer paso es actualizar las variables constantes.

Estas son las constantes de solicitud de flujo de grupos de anuncios que se deben agregar:

  • STREAM_URL: Solo se usa para transmisiones en vivo: Es la URL de transmisión de video que proporciona tu manipulador de manifiestos o tu socio externo con la publicación de grupos de anuncios. Debería requerir que insertes el ID de transmisión que proporciona el SDK de IMA DAI antes de realizar una solicitud. En este caso, la URL de la transmisión incluye un marcador de posición, "[[STREAMID]]", que se reemplaza por el ID de la transmisión antes de realizar una solicitud.

  • NETWORK_CODE: Es el código de red de tu cuenta de Ad Manager 360.

  • CUSTOM_ASSET_KEY: Solo se usa para transmisiones en vivo: Es la clave de activo personalizado que identifica tu evento de publicación de grupo de anuncios en Ad Manager 360. Tu manipulador de manifiestos o tu socio externo de Publicación de grupos de anuncios puede crearlo.

  • API_KEY: Solo se usa para transmisiones en vivo: Es una clave de API opcional que se puede requerir para recuperar un ID de transmisión desde el SDK de DAI de IMA.

Android DAI BasicExample está diseñado para reproducir una variedad de tipos de transmisiones diferentes, pero para la publicación de grupos de anuncios, está configurado para reproducir una sola transmisión. Cambia la sección de variables del ejemplo para que coincida con lo siguiente:

/** 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 {

...

Crea una solicitud de transmisión de grupos de anuncios en vivo o de VOD para habilitar la Publicación de grupos de anuncios

Publicación de grupos de transmisiones en vivo

Se quitó el método buildStreamRequest() que se usaba para alternar entre la compilación de una variedad de tipos de transmisiones. Luego, cambia requestAndPlayAds() para llamar a ImaSdkFactory.createPodStreamRequest() y crear una solicitud de anuncio de publicación de pod en vivo. Por último, solicita la transmisión con 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);
}

Publicación de grupos de anuncios de transmisión de VOD

Se quitó el método buildStreamRequest() que se usaba para alternar entre la compilación de una variedad de tipos de transmisiones. Luego, cambia requestAndPlayAds() para llamar a ImaSdkFactory.createPodVodStreamRequest() y crear una solicitud de anuncio de publicación de pod de VOD. Por último, solicita la transmisión con AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Edita y configura la URL de transmisión

Publicación de grupos de transmisiones en vivo

Llama a StreamManager.getStreamId() para obtener el ID de la transmisión. Luego, se debe insertar en STEAM_URL reemplazando "[[STREAMID]]". Después de realizar este cambio, se puede configurar la nueva URL de transmisión con 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();
}

Publicación de grupos de anuncios de transmisión de VOD

Llama a StreamManager.getStreamId() para obtener el ID de la transmisión. Luego, solicita una URL de transmisión a tu socio de tecnología de video (VTP). Luego, llama a StreamManager.loadThirdPartyStream() para que IMA cargue la URL de transmisión y los subtítulos que devuelva tu 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);
}

Cuando se habilita la publicación de Pods, IMA no realiza llamadas a VideoStreamPlayer.loadUrl(), por lo que puedes quitar de ella cualquier llamada a videoPlayer.setStreamUrl() y videoPlayer.play().

Limpia los recursos de DAI de IMA

Cuando termines de solicitar y mostrar anuncios correctamente en una transmisión de publicación de grupos con el SDK de DAI de IMA, te sugerimos que limpies los recursos después de que se complete la sesión de publicación de grupos. Llama a StreamManager.destroy() para detener la reproducción de la transmisión, detener todo el seguimiento de anuncios y liberar todos los recursos de transmisión cargados.

Para ver otros ejemplos del uso del SDK de Android, consulta los ejemplos en GitHub.