Iniziare a utilizzare l'SDK IMA DAI

Gli SDK IMA semplificano l'integrazione degli annunci multimediali nei siti web e nelle app. Gli SDK IMA possono richiedi annunci da qualsiasi ad server compatibile con VAST e gestire la riproduzione degli annunci nelle tue app. Con gli SDK IMA DAI, le app richiesta di streaming per annunci e contenuti video, sia VOD che contenuti dal vivo. L'SDK restituisce quindi video stream combinati, in modo che non sia necessario gestire il passaggio dall'annuncio ai video di contenuti e viceversa all'interno dell'app.

Seleziona la soluzione DAI che ti interessa

Pubblicazione di pod DAI

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

Panoramica della pubblicazione di pod DAI IMA

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 per server pubblicitari di Google. Deve essere creato utilizzando IMAPodStreamRequest o IMAPodVODStreamRequest per attivare il servizio di pod. Entrambi i metodi richiedono un codice di rete eIMAPodStreamRequest richiede anche una chiave asset personalizzata. Una chiave API è facoltativa.

  • IMAStreamManager: un oggetto che gestisce la comunicazione tra lo stream video e l'SDK IMA DAI, come l'attivazione dei ping di monitoraggio e inoltrare gli eventi di streaming al publisher.

Prerequisiti

Prima di iniziare, devi disporre di quanto segue:

  • Xcode 13 o versioni successive.
  • CocoaPods (opzione preferita), Swift Package Manager o una copia scaricata SDK IMA DAI per tvOS.
  • Un'app per tvOS già configurata con l'SDK IMA DAI per riprodurre stream video con annunci DAI. Se non hai già un'app di questo tipo, ti consigliamo di utilizzare tvOS DAI BasicExample come punto di partenza. BasicExample contiene la base di codice a cui si fa 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 il servizio di pod vengono eseguite in ViewController.swift in Swift o ViewController.m in Objective-C. Per impostazione predefinita, gli snippet in questa guida utilizzano il linguaggio Swift. Il primo passaggio consiste nell'aggiornare variabili costanti.

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

  • STREAM_URL (da utilizzare solo per i live streaming): l'URL dello stream video fornito dal tuo manipolatore di manifest o dal partner di terze parti che utilizza la pubblicazione di pod. Prima di effettuare una richiesta, dovrebbe essere richiesto di inserire l'ID stream fornito dall'SDK IMA DAI. In questo caso, l'URL dello 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 (utilizzato solo per i live streaming): la chiave della risorsa personalizzata che identifica l'evento di pubblicazione del pod in Ad Manager 360. Può essere creato dal tuo manipolatore del manifest o dal partner di pubblicazione di pod di terze parti.
  • API_KEY (Utilizzata solo per i live streaming): una chiave API facoltativa che può essere obbligatoria per recuperare un ID stream dall'SDK DAI IMA.

Modifica la sezione delle variabili 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?
  ...

Crea una richiesta di streaming di pod dal vivo o VOD

Pubblicazione di pod di live streaming

Modifica il metodo requestStream per creare una richiesta di stream dal vivo del pod, instanziando 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 stream di pod VOD ovverando 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 recupera l'ID stream. Quindi inserisci l'ID stream in STREAM_URL, sostituendo "[[STREAMID]]". Una volta apportata la modifica, è possibile impostato 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
  }

  ...

Pubblicazione di pod di stream VOD

Modifica i metodi IMAAdsLoaderDelegate, utilizzando streamManager.streamId per recuperare l'ID stream. Quindi, richiedi l'URL dello stream dalla tua tecnologia video. partner (VTP) e chiama IMAStreamManager.loadThirdPartyStream() per ottenere l'IMA carica l'URL dello stream e gli eventuali sottotitoli restituiti dal tuo 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 puoi richiedere e visualizzare gli annunci in uno stream di pubblicazione di pod con l'SDK IMA DAI per tvOS. Per vedere altri esempi di utilizzo dell'SDK DAI IMA, consulta gli esempi su GitHub.