Configura el SDK de IMA para la DAI

Los SDK de IMA facilitan la integración de anuncios multimedia en tus sitios web y aplicaciones. Los SDKs de IMA pueden solicitar anuncios de cualquier servidor de anuncios compatible con VAST y administrar la reproducción de anuncios en tus aplicaciones. Con los SDKs de IMA DAI, las apps realizan una solicitud de transmisión para el video del anuncio y el contenido, ya sea VOD o contenido en vivo. Luego, el SDK devuelve una transmisión de video combinada, de modo que no tengas que administrar el cambio entre el anuncio y el video de contenido en tu 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 de Publicación de grupos de anuncios de DAI con el SDK de IMA DAI para tvOS con un reproductor de video. Para ver o seguir una integración de muestra completa, descarga la app de ejemplo de Pod Serving (Obj C o Swift).

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

La implementación de Pod Serving con el SDK de IMA DAI para tvOS implica dos componentes principales:

  • StreamRequest: Es un objeto que define una solicitud de transmisión a los servidores de anuncios de Google. Se debe crear con IMAPodStreamRequest o IMAPodVODStreamRequest para habilitar el servicio de Pods. Ambos métodos requieren un código de red, y IMAPodStreamRequest también necesita una clave de recurso personalizada. Una clave de API es opcional.

  • IMAStreamManager: Es un objeto que controla la comunicación entre la transmisión de video y el SDK de DAI de IMA, como el envío de pings de seguimiento y el reenvío de eventos de transmisión al publicador.

Requisitos previos

Antes de comenzar, necesitas lo siguiente:

  • Xcode 13 o una versión posterior.
  • CocoaPods (preferido), Swift Package Manager o una copia descargada del SDK de IMA DAI para tvOS.
  • Una app para tvOS ya configurada con el SDK de IMA DAI para reproducir transmisiones de video con anuncios de DAI Si aún no tienes una app de este tipo, te recomendamos que uses tvOS DAI 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 DAI de IMA, consulta la guía de inicio rápido.

Configura tus variables de Publicación de grupos de anuncios

Todos los cambios necesarios para Pod Serving se realizan en ViewController.swift en Swift o ViewController.m en Objective-C. Los fragmentos de código de esta guía usan el lenguaje Swift de forma predeterminada. El primer paso es actualizar las variables constantes.

Estas son las constantes de solicitud de transmisión de cápsula de anuncios que se deben agregar:

  • STREAM_URL (Solo se usa para transmisiones en vivo): Es la URL de la transmisión de video que proporciona tu manipulador de manifiestos o socio externo a través de la publicación de grupos de anuncios. Debería solicitarte que insertes el ID de transmisión que proporciona el SDK de DAI de IMA antes de que realices 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 personalizada que identifica tu evento de publicación de grupos de anuncios en Ad Manager 360. Tu manipulador de manifiestos o tu socio externo de Publicación de grupos de anuncios pueden crear este objeto.
  • API_KEY (Solo se usa para transmisiones en vivo): Es una clave de API opcional que puede ser necesaria para recuperar un ID de transmisión del SDK de IMA DAI.

Cambia la sección de variables del ejemplo para que coincida con la siguiente:

...
class ViewController:
  UIViewController,
  IMAAdsLoaderDelegate,
  IMAStreamManagerDelegate,
  AVPlayerViewControllerDelegate
{
  static let streamUrl = ""
  static let networkCode = ""
  static let customAssetKey = ""
  static let APIKey = ""
  static let backupStreamURLString = ""

  var adsLoader: IMAAdsLoader?
  ...

Crea una solicitud de transmisión de pod en vivo o de VOD

Publicación de pods de transmisiones en vivo

Modifica el método requestStream para crear una solicitud de transmisión de pod en vivo con la instancia IMAPodStreamRequest.

  ...

  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 transmisiones de VOD

Modifica el método requestStream para crear una solicitud de transmisión de pod de VOD con la instancia IMAPodVODStreamRequest.

  ...

  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)
  }

  ...

Edita y configura la URL de la transmisión

Publicación de pods de transmisiones en vivo

Modifica los métodos IMAAdsLoaderDelegate con streamManager.streamId para obtener el ID de transmisión. Luego, inserta el ID de transmisión en STREAM_URL y reemplaza "[[STREAMID]]". Una vez que se realice este cambio, se podrá establecer la nueva URL de transmisión 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 transmisiones de VOD

Modifica los métodos IMAAdsLoaderDelegate con streamManager.streamId para obtener el ID de transmisión. Luego, solicita una URL de transmisión a tu socio tecnológico de video (VTP) y llama a IMAStreamManager.loadThirdPartyStream() para que IMA cargue la URL de transmisión y los subtítulos que devuelva tu VTP.

  ...

  // 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
  }

Limpia los recursos de la DAI de IMA

Cuando hayas terminado de solicitar y mostrar anuncios en una transmisión de Pod Serving con el SDK de IMA DAI, te sugerimos que limpies los recursos después de que finalice la sesión de Pod Serving. Llama a IMAStreamManager.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 tvOS, consulta los ejemplos en GitHub.