Começar a usar o SDK de DAI do IMA

Com os SDKs do IMA, é fácil integrar anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor compatível com VAST e gerenciar a reprodução de anúncios nos seus apps. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de streaming para anúncio e conteúdo de vídeo, seja VOD ou conteúdo ao vivo. Em seguida, o SDK retorna um stream de vídeo combinado para que você não precise gerenciar a alternância entre anúncios e vídeos de conteúdo no seu app.

Selecione a solução de DAI do seu interesse

DAI de veiculação de conjuntos

Este guia demonstra como reproduzir um stream de Veiculação de conjunto DAI ao vivo ou VOD usando o SDK de DAI do IMA para tvOS com um player de vídeo simples. Se quiser acompanhar com uma amostra completa, faça o download do app de exemplo de disponibilização de pods (Obj C ou Swift).

Visão geral da veiculação de conjunto DAI do IMA

A implementação da veiculação de pods usando o SDK de DAI do IMA para tvOS envolve dois componentes principais:

  • StreamRequest: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. Precisa ser criado usando IMAPodStreamRequest ou IMAPodVODStreamRequest para ativar a disponibilização de pods. Os dois métodos exigem um código de rede, e IMAPodStreamRequest também precisa de uma chave de recurso personalizada. Uma chave de API é opcional.

  • IMAStreamManager: objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparar pings de rastreamento e encaminhar eventos de stream ao editor.

Pré-requisitos

Antes de começar, os seguintes itens são necessários:

  • Xcode 13 ou mais recente.
  • CocoaPods (preferencial), Gerenciador de pacotes do Swift ou uma cópia transferida por download do SDK de DAI do IMA para tvOS (em inglês).
  • Um app tvOS já configurado com o SDK de DAI do IMA para reproduzir streams de vídeo com anúncios da DAI. Caso você ainda não tenha um app desse tipo, recomendamos usar o BasicExample de DAI para tvOS como ponto de partida. O BasicExample inclui a base de código mencionada neste guia. Para mais informações sobre como implementar o SDK de DAI do IMA, consulte o Guia de início rápido.

Configurar as variáveis de disponibilização de pods

Todas as alterações necessárias para a disponibilização de pods são feitas em ViewController.swift em Swift ou ViewController.m em Objective-C. Por padrão, os snippets neste guia usam a linguagem Swift. A primeira etapa é atualizar as variáveis constantes.

Estas são as constantes de solicitação de stream do conjunto de anúncios que serão adicionadas:

  • STREAM_URL (usado apenas para transmissões ao vivo): é o URL de stream de vídeo fornecido pelo manipulador do manifesto ou pelo parceiro terceirizado que usa a veiculação de conjunto. É necessário que você insira o ID de stream fornecido pelo SDK de DAI do IMA antes de fazer uma solicitação. Nesse caso, o URL de stream inclui um marcador, "[[STREAMID]]", que é substituído pelo ID do stream antes de fazer uma solicitação.
  • NETWORK_CODE: o código da rede da conta do Ad Manager 360.
  • CUSTOM_ASSET_KEY (usada apenas para transmissões ao vivo): é a chave de recurso personalizada que identifica o evento de veiculação do conjunto no Ad Manager 360. Isso pode ser criado pelo manipulador de manifesto ou pelo parceiro terceirizado de veiculação de pod.
  • API_KEY (usada apenas para transmissões ao vivo): é uma chave de API opcional que pode ser necessária para recuperar um ID de stream do SDK de DAI do IMA.

Altere a seção de variável do exemplo para corresponder ao seguinte:

...
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?
  ...

Criar uma solicitação de transmissão de conjunto ao vivo ou de VOD

Veiculação de conjunto de transmissão ao vivo

Modifique o método requestStream para criar uma solicitação de transmissão de pod ao vivo instanciando 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)
  }

  ...

Veiculação de conjunto de stream de VOD

Modifique o método requestStream para criar uma solicitação de stream do pod de VOD instanciando 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)
  }

  ...

Editar e definir o URL da transmissão

Veiculação de conjunto de transmissão ao vivo

Modifique os métodos IMAAdsLoaderDelegate usando streamManager.streamId para receber o ID do stream. Em seguida, insira o ID do fluxo no STREAM_URL, substituindo "[[STREAMID]]". Depois que essa alteração for feita, o novo URL de stream poderá ser definido usando 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
  }

  ...

Veiculação de conjunto de stream de VOD

Modifique os métodos IMAAdsLoaderDelegate usando streamManager.streamId para receber o ID do stream. Em seguida, solicite um URL de stream do seu parceiro de tecnologia de vídeo (VTP, na sigla em inglês) e chame IMAStreamManager.loadThirdPartyStream() para que o IMA carregue o URL de stream e as legendas retornadas pelo 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
  }

Pronto! Agora você está solicitando e exibindo anúncios em um stream de veiculação de conjunto com o SDK de DAI do IMA para tvOS. Para ver outros exemplos de uso do SDK de DAI do IMA, consulte as amostras no GitHub (link em inglês).