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 de anúncios compatíveis com VAST e gerencie a reprodução de anúncios nos seus apps. Com os SDKs de DAI do IMA, os apps criam 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 uma stream de vídeo combinado, para que você não precise alternar entre anúncios e conteúdo em vídeo 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 disponibilização de pod DAI ao vivo ou VOD usando o SDK de DAI do IMA para tvOS com um player de vídeo simples. Se quiser seguir junto 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 conjuntos usando o SDK de DAI do IMA para tvOS envolve duas etapas componentes:

  • StreamRequest: um objeto que define uma solicitação de stream para servidores de publicidade do Google. Precisam ser criados 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: um 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 encaminhando eventos de stream para o 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 baixada da 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 da DAI. Se você ainda não possui esse aplicativo, recomendamos o uso do DAI para tvOS 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 de DAI do IMA, consulte a Guia de início rápido.

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

Todas as mudanças necessárias para a disponibilização de pods são feitas em ViewController.swift em Swift ou ViewController.m em Objective-C. Os snippets deste guia o padrão é usar a linguagem Swift. A primeira etapa é atualizar 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 o manipulador de manifesto ou um parceiro terceirizado usando a veiculação de pods. Ele deveria exigem que você insira o código 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 de 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 seu evento de veiculação de conjunto no Ad Manager 360. Ela pode ser criada seu manipulador de manifesto ou um 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ário 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 conjunto ao vivo da seguinte forma: 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 fluxo. Em seguida, insira o ID do stream no STREAM_URL, substituindo "[[STREAMID]]". Depois que essa alteração for feita, o novo URL de transmissão 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 fluxo. Em seguida, solicite um URL de stream da sua tecnologia de vídeo parceiro (VTP) e chamar IMAStreamManager.loadThirdPartyStream() para que o IMA carregue o URL da transmissão 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 fluxo de veiculação de conjunto com o SDK de DAI do IMA para tvOS. Para ver outros exemplos do SDK de DAI do IMA em uso, consulte os exemplos no GitHub.