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 un una transmisión de video por Internet combinada, de modo que no tenga que administrar el cambio entre el video del anuncio y el de contenido dentro de la app.
Selecciona la solución de DAI que te interesa
Publicación de grupos de anuncios de DAI
En esta guía, se muestra cómo reproducir una transmisión en vivo o de VOD en la Publicación de grupos de anuncios de DAI con el SDK de IMA de DAI para tvOS con un reproductor de video sencillo. Si deseas seguir junto con una muestra completa, descarga la app de ejemplo de Entrega de Pods (Obj C o Swift).
Descripción general de la publicación de grupos de anuncios de DAI de IMA
La implementación de la entrega de grupos de anuncios con el SDK de IMA de DAI para tvOS consta de dos componentes:
StreamRequest
: Es un objeto que define una solicitud de transmisión a los servidores de publicidad de Google. Se deben crear usando cualquiera de las siguientes opciones:IMAPodStreamRequest
oIMAPodVODStreamRequest
para habilitar la entrega de grupos de anuncios. Ambos métodos requieren un código de red yIMAPodStreamRequest
también necesita una clave de activo personalizado. Una clave de API es opcional.IMAStreamManager
: Es un objeto que controla la comunicación entre entre la transmisión de video por Internet y el SDK de IMA de DAI, como activar pings de seguimiento reenviar eventos de transmisión al publicador.
Requisitos previos
Antes de comenzar, necesitas lo siguiente:
- Xcode 13 o una versión posterior
- CocoaPods (opción preferida), Swift Package Manager o un copia descargada de la SDK de IMA de DAI para tvOS.
- Una app para tvOS ya configurada con el SDK de DAI de IMA para reproducir transmisiones de video con anuncios de DAI Si aún no tienes una app de este tipo, te recomendamos usar la DAI de tvOS BasicExample como punto de partida. BasicExample tiene la base de código a la que se hace referencia en esta guía. Para obtener más información sobre cómo implementar el SDK de IMA de DAI, consulta el Guía de inicio rápido.
Configura las variables de publicación de grupos de anuncios
Todos los cambios necesarios para la publicación de grupos de anuncios se realizan en ViewController.swift
de
Swift o ViewController.m
en Objective-C Los fragmentos de esta guía usan el lenguaje Swift de forma predeterminada. El primer paso es actualizar
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 socio externo mediante la publicación de grupos. Debe se le solicita que inserte el ID de transmisión proporcionado por el SDK de IMA de DAI antes de realiza 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 de activo personalizado que identifica tu evento de publicación de grupos de anuncios en Ad Manager 360. Esto lo puede crear tu manipulador de manifiestos o tu socio externo de entrega de grupos de anuncios.API_KEY
(solo se usa para transmisiones en vivo): es una clave de API opcional que se puede necesarias para recuperar un ID de transmisión del SDK de IMA de DAI.
Cambia la sección de variables del ejemplo para que coincida con lo siguiente:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl =
"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]]"
static let networkCode = "51636543"
static let customAssetKey = "google-sample"
static let APIKey = ""
static let backupStreamURLString =
"http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"
var adsLoader: IMAAdsLoader?
...
Crea una solicitud de transmisión continua de grupos de anuncios en vivo o de VOD
Publicación de grupos de anuncios de transmisión en vivo
Crea una instancia de IMAPodStreamRequest
para modificar el método requestStream
y crear una solicitud de transmisión continua de pods en vivo.
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodStreamRequest(
networkCode: self.networkCode,
customAssetKey: self.customAssetKey,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
Publicación de grupos de anuncios de transmisión de VOD
Crea una instancia de IMAPodVODStreamRequest
para modificar el método requestStream
y crear una solicitud de transmisión de pod de VOD.
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodVODStreamRequest(
networkCode: self.networkCode,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
Cómo editar y configurar la URL de la transmisión
Publicación de grupos de anuncios de transmisión en vivo
Modifica los métodos IMAAdsLoaderDelegate
y usa streamManager.streamId
para obtener el ID de transmisión. Luego, inserta el ID de flujo en STREAM_URL
y reemplaza
"[[STREAMID]]"
Una vez que realices este cambio, podrás acceder a la nueva URL
establecer con videoDisplay.loadStream()
.
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
let loadedStreamUrl = URL(string:urlString)
self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
self.videoDisplay.play()
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
...
Publicación de grupos de anuncios de transmisión de VOD
Modifica los métodos IMAAdsLoaderDelegate
y usa streamManager.streamId
para obtener el ID de transmisión. Luego, solicita una URL de transmisión de tu tecnología de video
socio (VTP) y llamar a IMAStreamManager.loadThirdPartyStream()
para utilizar IMA
cargarás la URL de la transmisión y los subtítulos que muestre tu TVP.
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
let streamUrl = vtpInterface.requestStreamURL(streamID)
self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
Eso es todo. Ahora está solicitando y mostrando anuncios en una transmisión de publicación de grupos de anuncios con el SDK de IMA de DAI para tvOS. Para ver otros ejemplos del uso del SDK de IMA DAI, consulta los ejemplos en GitHub.