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

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

Seleccione la solución de DAI que le interesa

DAI de publicación de grupos de anuncios

Los SDK de IMA facilitan la integración de anuncios multimedia en tus sitios web y aplicaciones. Los SDK de IMA pueden solicitar anuncios de cualquier servidor de anuncios compatible con VAST y administrar la reproducción de anuncios en tus apps. Con los SDK de IMA de DAI, las apps realizan una solicitud de transmisión para anuncios y videos de contenido, ya sea VOD o contenido en vivo. Luego, el SDK muestra una transmisión de video por Internet combinada para que no tengas que administrar el cambio entre el anuncio y el video 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 mediante el SDK de DAI de IMA para Android con un reproductor de video simple para la reproducción de transmisiones en vivo y de VOD. Si deseas ver o seguir una integración de muestra completa, descarga el ejemplo de entrega 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 para los servidores de publicidad de Google. Se debe crear con ImaSdkFactory.createPodStreamRequest() o ImaSdkFactory.createPodVodStreamRequest() para habilitar la entrega de Pods. Estos métodos requieren un código de red, y createPodStreamRequest también requiere una clave de recurso personalizada 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 por Internet 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 entrega de Pods

Todos los cambios necesarios para la entrega de pods se realizan en SampleAdsWrapper.java. El primer paso es actualizar las variables constantes.

A continuación, se incluyen las constantes de solicitudes de transmisión de grupos de anuncios que se agregarán:

  • STREAM_URL: Solo se usa para transmisiones en vivo: Es la URL de transmisión de video por Internet que proporciona el manipulador de manifiestos o el socio externo que usa la publicación de grupos de anuncios. Es necesario que insertes el ID de transmisión proporcionado por el SDK de DAI de IMA antes de realizar una solicitud. En este caso, la URL de transmisión incluye un marcador de posición, "[[STREAMID]]", que se reemplaza por el ID de 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 del recurso personalizada que identifica el evento de publicación de tu grupo de anuncios en Ad Manager 360. Tu manipulador de manifiestos o un socio externo de publicación de Pods 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.

El ejemplo básico de la DAI de Android está diseñado para reproducir una variedad de tipos de transmisión diferentes, pero, para la entrega de pods, está configurado de modo que solo reproduzca una transmisión única. Cambia la sección de variable 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 {

...

Crear una solicitud de transmisión de grupo de anuncios en vivo o de VOD para habilitar la publicación de grupos de anuncios

Publicación del grupo de anuncios de transmisión en vivo

Quita el método buildStreamRequest() que se usó para cambiar entre la compilación de una variedad de tipos de transmisión. Luego, cambia requestAndPlayAds() para llamar a ImaSdkFactory.createPodStreamRequest() y crear una solicitud de anuncio de publicación de Pods 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 del grupo de anuncios de transmisión de VOD

Quita el método buildStreamRequest() que se usó para cambiar entre la compilación de una variedad de tipos de transmisión. Luego, cambia requestAndPlayAds() para llamar a ImaSdkFactory.createPodVodStreamRequest() y crear una solicitud de anuncio de publicación de Pods 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 la transmisión

Publicación del grupo de anuncios de transmisión en vivo

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

Llama a StreamManager.getStreamId() para obtener el ID de 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 muestre 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 grupos de anuncios, IMA no realiza llamadas a VideoStreamPlayer.loadUrl(), por lo que puedes quitarle cualquier llamada a videoPlayer.setStreamUrl() y videoPlayer.play().

Listo. Ahora solicitas y muestras anuncios en una transmisión de publicación de Pods con el SDK de DAI para Android de IMA. Para ver otros ejemplos del SDK de Android que se usa, consulta los ejemplos en GitHub.