En esta guía, se muestra cómo integrar el SDK de IMA para DAI en una app de reproductor de video simple. Si quieres ver o seguir una integración de ejemplo completa, descarga el BasicExample de GitHub.
Descripción general de IMA para DAI
La implementación de IMA para DAI implica cuatro componentes principales del SDK, como se muestra en esta guía:
StreamDisplayContainer: Es un objeto contenedor que se encuentra sobre el elemento de reproducción de video y aloja los elementos de la IU del anuncio.AdsLoader: Es un objeto que solicita transmisiones y controla los eventos que activan los objetos de respuesta de solicitud de transmisión. Solo debes crear una instancia de un cargador de anuncios, que se puede reutilizar durante toda la vida útil de la aplicación.StreamRequest: Es un objeto que define una solicitud de transmisión. Las solicitudes de transmisión pueden ser para videos on demand o transmisiones en vivo. Las solicitudes de transmisión en vivo especifican una clave de recurso, mientras que las solicitudes de VOD especifican un ID de CMS y un ID de video. Ambos tipos de solicitudes pueden incluir, de forma opcional, una clave de API necesaria para acceder a las transmisiones especificadas y un código de red de Google Ad Manager para que el SDK de IMA controle los identificadores de anuncios según se especifica en la configuración de Google Ad Manager.StreamManager: Es un objeto que controla las transmisiones de inserción de anuncios dinámicos y las interacciones con el backend de DAI. El administrador de transmisiones también controla los pings de seguimiento y reenvía los eventos de transmisión y de anuncios al publicador.
Requisitos previos
- Android Studio
- App de reproductor de video de muestra para la integración del SDK
Descarga y ejecuta la app de reproductor de video de muestra
La app de ejemplo proporciona un reproductor de video que funciona y reproduce videos en HLS. Úsala como punto de partida para integrar las funciones de DAI del SDK de IMA para DAI.
Descarga la app de reproductor de video de muestra y extráela.
Inicia Android Studio y selecciona Open an existing Android Studio project o, si Android Studio ya se está ejecutando, selecciona File > New > Import Project. Luego, elige
SampleVideoPlayer/build.gradle.Ejecuta una sincronización de Gradle seleccionando Tools > Android > Sync Project with Gradle Files.
Asegúrate de que la app de reproductor se compile y se ejecute en un dispositivo Android físico o en un dispositivo virtual de Android con Run > Run 'app'. Es normal que la transmisión de video tarde unos minutos en cargarse antes de reproducirse.
Examina el reproductor de video de muestra
El reproductor de video de muestra aún no contiene ningún código de integración del SDK de IMA para DAI. La app de ejemplo consta de dos partes principales:
samplevideoplayer/SampleVideoPlayer.java: Es un reproductor de HLS basado en ExoPlayer que sirve como base para la integración de IMA para DAI.videoplayerapp/MyActivity.java: Esta actividad crea el reproductor de video y le pasa unContexty unmedia3.ui.PlayerView.
Agrega el SDK de IMA para DAI a la app del reproductor
También debes incluir una referencia al SDK de IMA para DAI. En Android Studio, agrega lo siguiente al archivo build.gradle de nivel de aplicación, ubicado en app/build.gradle. El SDK de IMA requiere que se habilite la expansión de sintaxis de la biblioteca, lo que debes hacer configurando coreLibraryDesugaringEnabled true y agregando 'com.android.tools:desugar_jdk_libs' como dependencia en el archivo build.gradle. Para obtener más detalles, consulta
APIs de Java 11 y versiones posteriores disponibles con la expansión de sintaxis con la especificación nio.
Integra el SDK de IMA para DAI
Crea una clase nueva llamada
SampleAdsWrapperen el paquetevideoplayerapp(enapp/java/com.google.ads.interactivemedia.v3.samples/videoplayerapp/) para unir elSampleVideoPlayerexistente y agregar lógica que implemente la DAI de IMA. Para ello, primero debes crear unAdsLoader, que se usa para solicitar la transmisión de DAI.Este fragmento incluye parámetros de ejemplo para transmisiones de HLS y DASH, en vivo y de VOD. Para establecer qué transmisión se está reproduciendo, actualiza la variable
CONTENT_TYPE.Crea un método auxiliar
createSampleVideoPlayerCallback()para controlar la creación de una instancia de interfazSampleVideoPlayerCallbackque extiendaVideoStreamPlayer.VideoStreamPlayerCallback.Para trabajar con la DAI, el reproductor debe pasar eventos ID3 al SDK de IMA para DAI. El método
callback.onUserTextReceived()hace esto en el siguiente código de muestra.Agrega un método
buildStreamRequest()para crear elSteamRequest. Este método cambia entre diferentes transmisiones según cómo configures la variableCONTENT_TYPE. La transmisión predeterminada que se usa en esta guía es la transmisión de HLS de VOD de ejemplo de IMA.También necesitas un
VideoStreamPlayerpara reproducir la transmisión, así que agrega un métodocreateVideoStreamPlayer(), que crea una clase anónima que implementaVideoStreamPlayer.Implementa los objetos de escucha obligatorios y agrega compatibilidad para el manejo de errores.
Observa la implementación de
AdErrorListener, ya que llama a una URL de respaldo si los anuncios no se reproducen. Como el contenido y los anuncios se encuentran en una sola transmisión, debes estar listo para llamar a una transmisión de resguardo si la transmisión de DAI encuentra un error.Agrega código para el registro.
Modifica
MyActivityenvideoplayerapppara crear una instancia deSampleAdsWrappery llamarla. Además, llama aImaSdkFactory.initialize()aquí con un método auxiliar para crear una instancia deImaSdkSettings.Agrega el método auxiliar
getImaSdkSettings()para crear una instancia deImaSdkSettings.Modifica el archivo de diseño
activity_my.xmlde la actividad para agregar elementos de la IU para el acceso.
¡Felicitaciones! Ahora, solicitas y muestras anuncios de video en tu app para Android. Para ajustar tu implementación, consulta Marcadores, Snapback y la documentación de la API.
Solución de problemas
Si tienes problemas para reproducir un anuncio de video, intenta descargar el BasicExample completo. Si funciona correctamente en BasicExample, es probable que haya un problema con el código de integración de IMA de tu app.
Si los problemas persisten, visita el foro del SDK de IMA.