Iniziare a utilizzare l'SDK IMA DAI

Gli SDK IMA semplificano l'integrazione di annunci multimediali nei tuoi siti web e nelle tue app. Gli SDK IMA possono richiedere annunci da qualsiasi ad server compatibile con VAST e gestire la riproduzione degli annunci nelle tue app. Con gli SDK IMA DAI, le app effettuano una richiesta di streaming per annunci e contenuti video, VOD o contenuti dal vivo. L'SDK restituisce quindi un video stream combinato, in modo che tu non debba gestire il passaggio tra l'annuncio e i contenuti video all'interno dell'app.

Seleziona la soluzione DAI che ti interessa

DAI pubblicazione pod

Questa guida illustra come riprodurre uno streaming dal vivo o VOD con pubblicazione di pod DAI utilizzando l'SDK IMA DAI per tvOS con un video player semplice. Se vuoi seguire un esempio completo, scarica l'app di esempio Pod Serving (Obj C o Swift).

Panoramica della pubblicazione di pod IMA DAI

L'implementazione della pubblicazione di pod utilizzando l'SDK IMA DAI per tvOS prevede due componenti principali:

  • StreamRequest: un oggetto che definisce una richiesta di streaming ai server pubblicitari di Google. Deve essere creato utilizzando IMAPodStreamRequest o IMAPodVODStreamRequest per abilitare la pubblicazione dei pod. Entrambi i metodi richiedono un codice di rete e IMAPodStreamRequest richiede anche una chiave asset personalizzata. È facoltativa una chiave API.

  • IMAStreamManager: un oggetto che gestisce la comunicazione tra il video stream e l'SDK IMA DAI, ad esempio l'attivazione dei ping di monitoraggio e l'inoltro degli eventi di streaming al publisher.

Prerequisiti

Prima di iniziare, occorre quanto segue:

  • Xcode 13 o versioni successive.
  • CocoaPods (opzione preferita), Swift Package Manager o una copia scaricata dell'SDK IMA per tvOS.
  • Un'app per tvOS già configurata con l'SDK IMA DAI per riprodurre video stream con annunci DAI. Se non hai ancora un'app di questo tipo, ti consigliamo di utilizzare tvOS DAI BasicExample come punto di partenza. L'esempio BasicExample contiene il codebase a cui viene fatto riferimento in questa guida. Per ulteriori informazioni su come implementare l'SDK IMA DAI, consulta la Guida rapida.

Configura le variabili di pubblicazione dei pod

Tutte le modifiche necessarie per la pubblicazione dei pod vengono apportate in ViewController.swift in Swift o ViewController.m in Objective-C. Per impostazione predefinita, gli snippet in questa guida utilizzano la lingua Swift. Il primo passaggio consiste nell'aggiornare le variabili costanti.

Di seguito sono riportate le costanti delle richieste di stream di pod di annunci da aggiungere:

  • STREAM_URL (utilizzato solo per i live streaming): l'URL del video stream fornito dal manipolatore del manifest o dal partner di terze parti che utilizza la pubblicazione dei pod. Dovresti inserire l'ID streaming fornito dall'SDK IMA DAI prima di effettuare una richiesta. In questo caso, l'URL stream include un segnaposto, "[[STREAMID]]", che viene sostituito con l'ID stream, prima di effettuare una richiesta.
  • NETWORK_CODE: il codice di rete del tuo account Ad Manager 360.
  • CUSTOM_ASSET_KEY (utilizzata solo per i live streaming): la chiave asset personalizzata che identifica l'evento di pubblicazione dei pod in Ad Manager 360. Può essere creato dal manipolatore del manifest o dal partner di pubblicazione pod di terze parti.
  • API_KEY (utilizzata solo per i live streaming): una chiave API facoltativa che può essere necessaria per recuperare un ID streaming dall'SDK IMA DAI.

Modifica la sezione della variabile dell'esempio in modo che corrisponda a quanto segue:

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

Creare una richiesta di streaming di pod dal vivo o VOD

Pubblicazione di pod in live streaming

Modifica il metodo requestStream per creare una richiesta di live streaming di pod rafforzando 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)
  }

  ...

Pubblicazione di pod di streaming VOD

Modifica il metodo requestStream per creare una richiesta di streaming di pod VOD rafforzando 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)
  }

  ...

Modificare e impostare l'URL dello stream

Pubblicazione di pod in live streaming

Modifica i metodi IMAAdsLoaderDelegate, utilizzando streamManager.streamId per ottenere l'ID stream. Quindi inserisci l'ID stream in STREAM_URL, sostituendo "[[STREAMID]]". Una volta apportata questa modifica, il nuovo URL dello stream può essere impostato utilizzando 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
  }

  ...

Pubblicazione di pod di streaming VOD

Modifica i metodi IMAAdsLoaderDelegate, utilizzando streamManager.streamId per ottenere l'ID stream. Dopodiché, richiedi un URL dello stream al tuo partner di tecnologia video (VTP) e chiama IMAStreamManager.loadThirdPartyStream() per chiedere a IMA di caricare l'URL dello stream e gli eventuali sottotitoli restituiti dal tuo programma 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
  }

È tutto. Ora richiedi e mostri annunci in uno stream di pubblicazione pod con l'SDK IMA DAI per tvOS. Per vedere altri esempi di SDK IMA DAI in uso, esamina gli esempi su GitHub.