La especificación de Intersticiales de HLS presenta una forma flexible de programar e insertar anuncios en una transmisión de audio o video. Con el enfoque del cliente, tu aplicación tiene el control total sobre cuándo solicitar y reproducir las pausas publicitarias creando la clase AVPlayerInterstitialEvent. Este enfoque no requiere las etiquetas EXT-X-DATERANGE en los manifiestos de la transmisión de contenido. Los anuncios intersticiales HLS del cliente te permiten insertar anuncios de forma dinámica en cualquier contenido, sin necesidad de modificar el manifiesto de la transmisión ni los archivos multimedia.
En esta guía, se explica cómo integrar el SDK de anuncios multimedia interactivos (IMA) en una app de reproductor de video que crea una sesión de transmisión en vivo de inserción de anuncios guiada por el servidor (SGAI) y programa anuncios intersticiales del cliente. Para obtener más información, consulta DAI guiada por el servidor.
Requisitos previos
Antes de comenzar, necesitas lo siguiente:
Un nuevo proyecto de Xcode que usa
Storyboardpara la interfaz de usuario. Para obtener más información, consulta Cómo crear un proyecto de Xcode para una app.SDK de IMA de Google Para obtener más información, consulta Configura el SDK de IMA para la DAI.
Los siguientes parámetros para tu solicitud de transmisión en vivo de DAI:
NETWORK_CODE: Es tu código de red de Google Ad Manager.CUSTOM_ASSET_KEY: Es la cadena personalizada que identifica el evento de transmisión en vivo de DAI. El evento de transmisión en vivo debe tener el tipo de DAI de manifiesto de publicación de grupos de anuncios.
Cómo configurar un guion gráfico
En tu archivo iPhone.storyboard, haz lo siguiente:
- Crea un objeto
UIViewcomo contenedor del reproductor de video y la IU del anuncio. - Crea una propiedad
adUIViewde la claseViewControllerpara conectarte con el objetoUIView. - En el objeto
adUIView, crea unUIButtonpara que funcione como botón de reproducción. - Crea una propiedad
playButtonde la claseViewControllerpara conectarte con el objetoUIButtony una funciónonPlayButtonTouchpara controlar los toques del usuario.
Inicializa un cargador de anuncios
En el evento viewDidLoad del controlador de vista principal, haz lo siguiente:
- Configura un reproductor de video con las clases
AVPlayeryAVPlayerLayer. - Crea objetos
IMAAdDisplayContaineryIMAAVPlayerVideoDisplay. El contenedor de visualización de anuncios especifica eladUIViewpara que el SDK de DAI de IMA inserte las vistas secundarias de la IU del anuncio. El objeto de visualización de video actúa como un puente entre la lógica de anuncios del SDK de DAI de IMA y el sistema de reproducción de AVFoundation, y hace un seguimiento de la reproducción de los anuncios de video. - Inicializa el objeto
IMAAdsLoadercon la configuración de reproducción de anuncios y localización de la IU de anuncios.
En el siguiente ejemplo, se inicializa un cargador de anuncios con un objeto IMASettings vacío:
Realiza una solicitud de transmisión
Para solicitar anuncios para una transmisión de contenido, crea un objeto IMAPodStreamRequest y pásalo a tu instancia de IMAAdsLoader. De forma opcional, establece la propiedad adTagParameters para proporcionar opciones de DAI y parámetros de segmentación para tu transmisión.
En este ejemplo, se llama al método loadAdStream en el evento viewDidAppear:
En tu app de producción, llama al método loadAdStream después de que el usuario seleccione una transmisión de contenido.
Cómo controlar eventos de carga de transmisiones
Implementa el protocolo IMAAdsLoaderDelegate para controlar el éxito o el fracaso de la solicitud de transmisión:
- Si la operación se realiza correctamente, recibirás un objeto
IMAAdsLoadedDataque contiene elIMAStreamManager. Almacena el valor destreamManager.streamIdpara la sesión de DAI actual. - Si falla, registra el error.
En el siguiente ejemplo, se controla el evento de carga de la transmisión y se registra el evento de error en la carga de la transmisión:
Programa inserciones de anuncios
Para programar una pausa publicitaria, crea un objeto AVPlayerInterstitialEvent. Establece la propiedad templateItems del objeto de evento en un array de objetos AVPlayerItem, en el que cada objeto de elemento contiene una URL del manifiesto del pod de anuncios.
Para crear una URL de manifiesto de grupo de anuncios, consulta la documentación de Method: HLS pod manifest.
A modo de demostración, en el siguiente ejemplo, se genera una cadena de identificador de pod con la hora actual de la transmisión en vivo de contenido. La función generatePodIdentifier devuelve el identificador del pod como ad_break_id/mid-roll-{minute}.
En tu app de producción, recupera el identificador del pod de una fuente que proporcione valores únicos para cada pausa publicitaria, sincronizados para todos los usuarios que miran la transmisión en vivo.
En el siguiente ejemplo, se programa una pausa publicitaria para que comience en los próximos dos minutos después de que el usuario haga clic en el botón de reproducción:
El método scheduleAdInsertion calcula la hora de inicio de la pausa publicitaria y crea una URL del manifiesto del grupo de anuncios. Usa esta URL para crear un objeto AVPlayerInterstitialEvent.
De manera opcional, usa la estructura AVPlayerInterstitialEvent.Restrictions para restringir el avance o el retroceso del usuario durante la reproducción del anuncio.
Cómo controlar eventos de anuncios
Para controlar eventos de anuncios, implementa el protocolo IMAStreamManagerDelegate. Este enfoque te permite hacer un seguimiento de cuándo comienzan y terminan las pausas publicitarias, y obtener información sobre los anuncios individuales.
Ejecuta tu app. Si la operación se realiza correctamente, podrás solicitar y reproducir anuncios intersticiales con una transmisión de manifiesto de entrega de Pod.