Iniziare a utilizzare l'SDK IMA DAI

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

Seleziona la soluzione DAI che ti interessa

Pubblicazione di pod DAI

Questa guida illustra come riprodurre uno streaming live o VOD con pubblicazione di pod DAI utilizzando l'SDK IMA DAI per iOS con un video player. Per visualizzare o seguire un'integrazione di esempio completata, scarica l'esempio di pubblicazione di pod per Objective-C o Swift.

Panoramica della pubblicazione di pod DAI IMA

L'implementazione di Pod Serving utilizzando l'SDK IMA DAI per iOS 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 dei 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 DAI IMA, ad esempio l'invio di ping di monitoraggio e l'inoltro di eventi stream 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 dell'SDK IMA DAI per iOS.
  • Un'app per iOS 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 iOS DAI BasicExample come punto di partenza. BasicExample contiene la base di codice a cui si fa riferimento in questa guida. Per saperne di più su come implementare l'SDK DAI IMA, consulta la guida rapida.

Configurare le variabili di pubblicazione dei pod

Tutte le modifiche necessarie per la pubblicazione 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 le 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 da un partner di terze parti che utilizza la pubblicazione di pod. Prima di effettuare una richiesta, ti 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 per il tuo account Ad Manager 360.
  • CUSTOM_ASSET_KEY (da utilizzare solo per i live streaming): la chiave della risorsa personalizzata che identifica l'evento di pubblicazione dei pod in Ad Manager 360. Può essere creato dal tuo manipolatore del manifest o da un partner di terze parti per la pubblicazione di pod.
  • 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?
  ...

Creare una richiesta di stream di pod in live streaming o VOD

Pubblicazione di pod in live streaming

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

Pubblicazione di pod in live streaming

Modifica i metodi IMAAdsLoaderDelegate, utilizzando streamManager.streamId per recuperare l'ID stream. Poi inserisci l'ID stream in STREAM_URL, sostituendo "[[STREAMID]]". Una volta apportata questa modifica, il nuovo URL 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 recuperare l'ID stream. Poi, richiedi un URL stream al tuo partner di tecnologia video (VTP). Quindi, chiama IMAStreamManager.loadThirdPartyStream() per chiedere all'IMA di caricare l'URL 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
  }

Ripulire gli asset DAI IMA

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

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