Upgrade di DAI da v3 a v4

Gli SDK IMA per DAI tvOS e lato client tvOS sono stati uniti nella versione 4 e sono stati rielaborati come sottoinsieme esatto dell'SDK per iOS. Ciò riduce notevolmente la curva di apprendimento per gli sviluppatori iOS. Di conseguenza, parte del codice necessario per gli utenti DAI è cambiato per essere più coerente con gli altri nostri SDK.

Questa guida illustra il processo necessario per eseguire l'upgrade di un'implementazione v3 esistente al nuovo SDK v4.

In caso di dubbi, consulta gli esempi di DAI per iOS. L'API tvOS v4 è la stessa (tranne per i companion e PIP, che non sono disponibili su tvOS).

Modificare il nome del modulo

Per creare una corrispondenza con l'SDK per iOS, abbiamo cambiato il nome del modulo da InteractiveMediaAds a GoogleInteractiveMediaAds.

Modifiche
Precedenti

#import <InteractiveMediaAds/InteractiveMediaAds.h>

Novità

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>

Precedenti

@import InteractiveMediaAds;

Novità

@import GoogleInteractiveMediaAds;

Crea il nuovo contenitore di annunci

L'IMAAdDisplayContainer è responsabile della gestione della visualizzazione del contenitore di annunci e delle aree annuncio companion utilizzate per la riproduzione dell'annuncio.

Modifiche
Precedenti Non esiste un equivalente precedente.
Novità

self.adDisplayContainer =
    [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView];

Passare IMAVideoDisplay e IMAAdDisplayContainer in IMAStreamRequest

Ora che disponi di un display video e di IMAAdDisplayContainer,, devi trasmetterli alla richiesta di streaming in modo che l'SDK IMA possa gestirli.

Modifiche
Precedenti

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey];
IMAVODStreamRequest *streamRequest =
    [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID
                                                 videoID:kVideoID];

Novità

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey
                                adDisplayContainer:self.adDisplayContainer
                                      videoDisplay:self.videoDisplay];
IMAVODStreamRequest *streamRequest =
      [[IMAVODStreamRequest alloc] initWithContentSourceId:kContentSourceID
                                                   videoId:kVideoID
                                        adDisplayContainer:self.adDisplayContainer
                                              videoDisplay:self.videoDisplay];

Richiesta con un IMAAdsLoader

Modifiche
Precedenti

self.streamManager =
    [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay];
self.streamManager.delegate = self;
[self.streamManager requestStream:streamRequest];

Novità

self.adsLoader = [[IMAAdsLoader alloc] init];
self.adsLoader.delegate = self;
[self.adsLoader requestStreamWithRequest:streamRequest];

Implementare IMAAdsLoaderDelega per l'inizializzazione del flusso

Queste funzioni sono state rinominate e modificate per garantire la coerenza con l'SDK per iOS. Anche il rapporto tra gestore dello stream e stream è cambiato. Nell'SDK v3 è possibile utilizzare un singolo gestore dello stream per gestire più stream. Nella v4, ogni gestore dello stream può gestire un solo stream.

Modifiche
Precedenti

- (void)streamManager:(IMAStreamManager *)streamManager
    didInitializeStream:(NSString *)streamID {
  NSLog(@"Stream initialized with streamID: %@", streamID);
}

- (void)streamManager:(IMAStreamManager *)streamManager
      didReceiveError:(NSError *)error {
  NSLog(@"Error: %@", error);
  [self playBackupStream];
}

Novità

- (void)adsLoader:(IMAAdsLoader *)loader
    adsLoadedWithData:(IMAAdsLoadedData *)adsLoadedData {
  self.streamManager = adsLoadedData.streamManager;
  self.streamManager.delegate = self;
  [self.streamManager initializeWithAdsRenderingSettings:nil];
  NSLog(@"Stream initialized with streamID: %@", self.streamManager.streamId);
}

- (void)adsLoader:(IMAAdsLoader *)loader
    failedWithErrorData:(IMAAdLoadingErrorData *)adErrorData {
  NSLog(@"Error: %@", adErrorData.adError);
  [self playBackupStream];
}

Implementare IMAStreamManagerDelega

Per garantire la coerenza con gli SDK iOS, l'SDK tvOS ora fornisce un unico delegato per la gestione dello stream, IMAStreamManagerDelegate, per la gestione degli eventi di streaming. Ora devi utilizzare un'istruzione di switch all'interno del delegato per gestire eventi specifici.

Modifiche
Precedenti

- (void)streamManager:(IMAStreamManager *)streamManager
      adBreakDidStart:(IMAAdBreakInfo *)adBreakInfo {
  NSLog(@"Ad break started");
  self.playerViewController.requiresLinearPlayback = YES;
}

- (void)streamManager:(IMAStreamManager *)streamManager
        adBreakDidEnd:(IMAAdBreakInfo *)adBreakInfo {
  NSLog(@"Ad break ended");
  self.playerViewController.requiresLinearPlayback = NO;
}

Novità

- (void)streamManager:(IMAStreamManager *)streamManager
    didReceiveAdEvent:(IMAAdEvent *)event {
  NSLog(@"StreamManager event (%@).", event.typeString);
  switch (event.type) {
    case kIMAAdEvent_AD_BREAK_STARTED: {
      NSLog(@"Ad break started");
      self.playerViewController.requiresLinearPlayback = YES;
      break;
    }
    case kIMAAdEvent_AD_BREAK_ENDED: {
      NSLog(@"Ad break ended");
      self.playerViewController.requiresLinearPlayback = NO;
      break;
    }
    // And so on for other events.
    default:
      break;
  }
}