Configurar o SDK do IMA para DAI

Selecione a plataforma: HTML5 Android iOS tvOS Cast Roku

Os SDKs do IMA facilitam a integração de anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor de anúncios 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 stream para anúncios e vídeos de conteúdo, 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 troca entre o anúncio e o vídeo de conteúdo no app.

Selecione a solução de DAI que você quer usar

DAI de veiculação de conjunto

Este guia mostra como reproduzir uma transmissão ao vivo ou VOD de veiculação de conjunto DAI usando o SDK do IMA DAI para tvOS com um player de vídeo. Para conferir ou seguir um exemplo de integração concluído, baixe o app de exemplo Pod Serving (Obj C ou Swift).

Visão geral da Veiculação de conjunto DAI da IMA

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

  • StreamRequest: um objeto que define uma solicitação de stream para servidores de publicidade do Google. Precisa ser criado usando IMAPodStreamRequest ou IMAPodVODStreamRequest para ativar a veiculaçã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: um objeto que processa a comunicação entre o stream de vídeo e o SDK do IMA DAI, como o disparo de pings de rastreamento e o encaminhamento de eventos de stream para o editor.

Pré-requisitos

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

  • Xcode 13 ou versões mais recentes.
  • Método para instalar o SDK do IMA:
  • Um app tvOS já configurado com o SDK DAI do IMA para reproduzir streams de vídeo com anúncios de DAI. Se você ainda não tiver um app assim, recomendamos usar o tvOS DAI BasicExample como um ponto de partida. O BasicExample tem a base de código referenciada neste guia. Para mais informações sobre como implementar o SDK DAI do IMA, consulte o guia de início rápido.

Configurar as variáveis de veiculação de conjunto

Faça todas as mudanças para a veiculação de pods em ViewController.swift em Swift ou ViewController.m em Objective-C. Os snippets neste guia usam o Swift por padrão. A primeira etapa é atualizar as variáveis constantes.

Adicione as seguintes constantes de solicitação de stream de pod de anúncio:

  • STREAM_URL (usado apenas em transmissões ao vivo): o URL de stream de vídeo fornecido pelo manipulador de manifesto ou parceiro terceirizado usando a veiculação de conjunto. Ele precisa exigir que você insira o ID de stream fornecido pelo SDK do IMA DAI antes de fazer uma solicitação. Nesse caso, o URL do stream inclui um marcador de posição, "[[STREAMID]]", que você substitui pelo ID do stream antes de fazer uma solicitação.
  • NETWORK_CODE: o código de rede da sua conta do Ad Manager 360.
  • CUSTOM_ASSET_KEY (usada apenas em transmissões ao vivo): a chave de recurso personalizada que identifica seu evento de veiculação de pods no Ad Manager 360. Seu manipulador de manifesto ou parceiro de veiculação de pods terceirizado pode criar isso.
  • API_KEY (usada apenas em transmissões ao vivo): uma chave de API opcional que pode ser necessária para recuperar um ID de transmissão do SDK do IMA DAI.

Mude a seção de variáveis do exemplo para corresponder ao seguinte:

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

  var adsLoader: IMAAdsLoader?
  ...

Criar uma solicitação de stream de podcast ao vivo ou de VOD

Disponibilização de pod de transmissão ao vivo

Modifique o método requestStream para criar uma solicitação de transmissão de pod ativo 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 de 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

Disponibilização de pod de transmissão ao vivo

Modifique os métodos IMAAdsLoaderDelegate usando streamManager.streamId para receber o ID do fluxo. Em seguida, insira o ID do fluxo em STREAM_URL, substituindo "[[STREAMID]]". Depois de fazer essa mudança, defina o novo URL de stream 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 fluxo. Em seguida, peça um URL de stream ao seu parceiro de tecnologia de vídeo (VTP) e chame IMAStreamManager.loadThirdPartyStream() para que a IMA carregue o URL de stream e todas as legendas retornadas pelo seu 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
  }

Limpar recursos da DAI da IMA

Quando você terminar de solicitar e exibir anúncios em um fluxo de veiculação de pods com o SDK da DAI do IMA, recomendamos que limpe todos os recursos após a conclusão da sessão de veiculação de pods. Chame IMAStreamManager.destroy() para interromper a reprodução de stream, parar todo o rastreamento de anúncios e liberar todos os recursos de stream carregados.

Para ver outros exemplos do uso do SDK do tvOS, consulte exemplos no GitHub.