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

En esta guía, se muestra cómo reproducir una transmisión en vivo o de VOD de DAI Pod Serving mediante el SDK de IMA de DAI para iOS con un reproductor de video simple. Si deseas continuar con una muestra completa, descarga el ejemplo de entrega de pods.

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

La implementación de la publicación de Pods con el SDK de IMA de DAI para iOS implica dos componentes principales:

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

  • IMAStreamManager: 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

Antes de comenzar, necesitas lo siguiente:

  • Xcode 13 o una versión posterior
  • CocoaPods (opción preferida), Swift Package Manager o una copia descargada del SDK de IMA para iOS.
  • Una app para iOS ya configurada con el SDK de IMA de DAI para reproducir transmisiones de video por Internet con anuncios de DAI Si aún no tienes una app de este tipo, te recomendamos que uses BasicExample de iOS como punto de partida. BasicExample tiene la base de código a la que se hace referencia en esta guía. Si deseas obtener más información para implementar el SDK de DAI de IMA, consulta la Guía de inicio rápido.

Configura tus variables de entrega de Pods

Todos los cambios necesarios para la entrega de Pods se realizan en ViewController.swift en swift o en ViewController.m en Objective-C. En los fragmentos de esta guía, se usa el lenguaje Swift de forma predeterminada. 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 Pod en Ad Manager 360. Se puede crear mediante tu manipulador de manifiestos o un socio externo de publicación de Pods.
  • 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.

Cambia la sección de variable 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?
  ...

Crear una solicitud de transmisión en vivo o de grupo de anuncios de VOD

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

Modifica el método requestStream para crear una solicitud de transmisión de Pods en vivo mediante la creación de una instancia de 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 del grupo de anuncios de transmisión de VOD

Modifica el método requestStream para crear una solicitud de transmisión de Pods de VOD mediante la creación de una instancia de 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 del grupo de anuncios de transmisión en vivo

Modifica los métodos IMAAdsLoaderDelegate mediante 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, la nueva URL de transmisión se puede configurar 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 del grupo de anuncios de transmisión de VOD

Modifica los métodos IMAAdsLoaderDelegate mediante streamManager.streamId 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 IMAStreamManager.loadThirdPartyStream() para que IMA cargue la URL de 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
  }

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