Configurare l'SDK IMA per 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 l'annuncio e il video dei contenuti, che possono essere VOD o live. L'SDK restituisce quindi uno stream video combinato, in modo da non dover gestire il passaggio tra l'annuncio e il video di contenuti all'interno dell'app.

Seleziona la soluzione DAI che ti interessa

DAI con pubblicazione di pod

Questa guida mostra come riprodurre uno stream live o VOD con pubblicazione di pod DAI utilizzando l'SDK IMA DAI per tvOS con un video player. Per visualizzare o seguire un'integrazione di esempio completata, scarica l'app di esempio per la pubblicazione di pod (Obj C o Swift).

Panoramica della pubblicazione di pod DAI di IMA

L'implementazione di Pod Serving utilizzando l'SDK IMA DAI per tvOS prevede due componenti principali:

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

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

Prerequisiti

Prima di iniziare, devi disporre di quanto segue:

  • Xcode 13 o versioni successive.
  • CocoaPods (opzione da preferire), Swift Package Manager o una copia scaricata dell'SDK IMA DAI per tvOS.
  • Un'app tvOS già configurata con l'SDK IMA DAI per riprodurre stream video con annunci DAI. Se non hai ancora un'app di questo tipo, ti consigliamo di utilizzare tvOS DAI BasicExample come punto di partenza. BasicExample ha la base di codice a cui viene fatto riferimento in questa guida. Per saperne di più su come implementare l'SDK IMA DAI, consulta la guida rapida.

Configurare le variabili di pubblicazione di pod

Tutte le modifiche necessarie per la pubblicazione dei pod vengono apportate in ViewController.swift in Swift o ViewController.m in Objective-C. Gli snippet di questa guida utilizzano per impostazione predefinita il linguaggio Swift. Il primo passaggio consiste nell'aggiornamento delle variabili costanti.

Ecco le costanti della richiesta di stream di pod di annunci da aggiungere:

  • STREAM_URL (utilizzato solo per i live streaming): l'URL dello stream video fornito da manipolatore di manifest o partner di terze parti che utilizza la pubblicazione di pod. Prima di effettuare una richiesta, devi 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 dell'asset personalizzato che identifica l'evento di pubblicazione pod in Ad Manager 360. Può essere creato dal manipolatore del manifest o dal partner di pubblicazione di pod di terze parti.
  • API_KEY (utilizzata solo per gli stream live): una chiave API facoltativa che può essere necessaria per recuperare un ID stream dall'SDK IMA DAI.

Modifica la sezione delle variabili dell'esempio in modo che corrisponda a quanto segue:

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

  var adsLoader: IMAAdsLoader?
  ...

Crea una richiesta di stream di pod live o VOD

Pod in uso per i live streaming

Modifica il metodo requestStream per creare una richiesta di stream di pod live istanziando 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 stream VOD

Modifica il metodo requestStream per creare una richiesta di stream di pod VOD istanziando 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

Pod in uso per i live streaming

Modifica i metodi IMAAdsLoaderDelegate utilizzando streamManager.streamId per ottenere l'ID stream. Poi 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 stream VOD

Modifica i metodi IMAAdsLoaderDelegate utilizzando streamManager.streamId per ottenere l'ID stream. Dopodiché, richiedi un URL dello stream al tuo partner tecnologico video (VTP) e chiama IMAStreamManager.loadThirdPartyStream() per fare in modo che IMA carichi l'URL dello stream e gli eventuali sottotitoli codificati restituiti dal tuo VTP.

  ...

  // 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
  }

Pulire gli asset IMA DAI

Una volta completata la richiesta e la visualizzazione degli annunci in uno stream di pubblicazione di pod con l'SDK IMA DAI, ti consigliamo di eliminare tutte le risorse al termine della sessione di pubblicazione di pod. Chiama IMAStreamManager.destroy() per interrompere la riproduzione dello stream, interrompere il monitoraggio di tutti gli annunci e rilasciare tutti gli asset dello stream caricati.

Per vedere altri esempi di utilizzo dell'SDK tvOS, consulta gli esempi su GitHub.