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 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 annuncio e video di contenuti, sia VOD che contenuti dal vivo. L'SDK restituisce quindi uno stream video combinato, in modo che tu non debba gestire il passaggio dall'annuncio al video di contenuti all'interno dell'app.

Seleziona la soluzione DAI che ti interessa

DAI pubblicazione pod

Questa guida illustra come riprodurre una pubblicazione di pod DAI in live streaming o uno stream VOD utilizzando l'SDK IMA DAI per tvOS con un semplice video player. Se vuoi seguire un esempio completato, 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 necessita anche di una chiave asset personalizzata. Una chiave API è facoltativa.

  • 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, è necessario quanto segue:

  • Xcode 13 o versioni successive.
  • CocoaPods (opzione preferita), 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. L'elemento BasicExample ha 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 distribuzione dei pod vengono eseguite in ViewController.swift in Swift o in ViewController.m in Objective-C. Per impostazione predefinita, gli snippet in questa guida utilizzano il linguaggio Swift. Il primo passaggio consiste nell'aggiornare le variabili costanti.

Ecco le costanti di richiesta dello stream del pod di annunci da aggiungere:

  • STREAM_URL (Utilizzato solo per i live streaming): l'URL dello stream video fornito dal manipolatore del manifest o dal partner di terze parti che utilizza la pubblicazione dei pod. Prima di effettuare una richiesta, dovresti 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 dello 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 dei pod di terze parti.
  • API_KEY (Utilizzata solo per i live streaming): 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 =
    "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 in live streaming

Modifica il metodo requestStream per creare una richiesta di live streaming di pod mediante l'individuazione di 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 mediante verifica di 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 flusso. Quindi, inserisci l'ID stream in STREAM_URL, sostituendo "[[STREAMID]]". Una volta apportata la 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 flusso. Quindi, richiedi un URL dello stream al tuo partner di tecnologia video (VTP) e chiama IMAStreamManager.loadThirdPartyStream() per richiedere all'IMA di caricare l'URL dello stream ed 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 richiedi e mostri annunci in un pod che pubblica stream con l'SDK IMA DAI per tvOS. Per altri esempi di SDK IMA DAI in uso, guarda gli esempi su GitHub.