Cómo comenzar a usar el SDK de IMA de DAI

Los SDK de IMA facilitan la integración de anuncios multimedia en sus sitios web y aplicaciones. Los SDK de IMA pueden solicitar anuncios de cualquier servidor de anuncios compatible con VAST y administra la reproducción de anuncios en tus apps. Con los SDK de IMA de DAI, las aplicaciones solicitud de transmisión para 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

DAI de publicación de grupos de anuncios

Esta guía 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 iOS con un reproductor de video simple. Si deseas seguir junto con una muestra completa, descarga el ejemplo de publicación de grupos de anuncios.

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 iOS implica dos componentes:

  • StreamRequest: Es un objeto que define una solicitud de transmisión para a través de los servidores de publicidad de Google. Se deben crear usando cualquiera de las siguientes opciones: IMAPodStreamRequest o IMAPodVODStreamRequest para habilitar la entrega de grupos de anuncios. Ambos métodos requieren un código de red y IMAPodStreamRequest también necesita una clave del activo personalizada. 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 iOS:
  • Una aplicación para iOS ya configurada con el SDK de IMA de DAI para reproducir transmisiones de video anuncios de DAI. Si aún no tienes una app de este tipo, te recomendamos usar la DAI de iOS BasicExample como punto de partida. BasicExample tiene la base de código a la que se hace referencia en esta . 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 entrega de Pods se realizan en ViewController.swift, en swift o ViewController.m en Objective-C. Los fragmentos de esta guía de forma predeterminada usar Swift. El primer paso es actualizar variables constantes.

Estas son las constantes de solicitud de transmisión del grupo de anuncios que se agregarán:

  • STREAM_URL (Solo se usa para transmisiones en vivo): URL de la transmisión de video por Internet proporcionada por tu manipulador de manifiestos o socio externo usando la publicación de grupos de anuncios. 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 la transmisión incluye un marcador de posición, "[[STREAMID]]", que se reemplaza por el ID de transmisión, antes de crear una para cada 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 activo personalizada 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 necesarios 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 para un grupo de anuncios en vivo o de VOD

Publicación de grupos de anuncios en vivo

Modifica el método requestStream para crear una solicitud de transmisión de Pod en vivo. Para ello, haz lo siguiente: se está creando 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 de grupos de anuncios de transmisión de VOD

Modifica el método requestStream para crear una solicitud de transmisión de Pod de VOD. Para ello, haz lo siguiente: se está creando 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)
  }

  ...

Cómo editar y configurar la URL de la transmisión

Publicación de grupos de anuncios en vivo

Modifica los métodos IMAAdsLoaderDelegate con 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 con streamManager.streamId para obtener el ID de transmisión. Luego, solicita una URL de transmisión de tu tecnología de video (VTP). Luego, llama 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 iOS. Para ver otros ejemplos del SDK de IMA de DAI en uso, haga lo siguiente: consulta las muestras en GitHub.