L'SDK IMA DAI e l'SDK IMA lato client sono stati uniti nella versione 4, ed è stato rielaborato come sottoinsieme esatto dell'SDK per iOS. Significativamente riduce la curva di apprendimento per gli sviluppatori iOS. Di conseguenza, una parte del codice richiesta per gli utenti DAI è cambiata per essere più coerente con gli altri nostri SDK.
Questa guida illustra la procedura necessaria per eseguire l'upgrade di una versione 3 esistente al nuovo SDK v4.
In caso di dubbi, consulta il Campioni DAI per iOS: L'API tvOS v4 è la stessa (tranne per companion e PIP, che non sono disponibili su tvOS).
Cambiare il nome del modulo
Per corrispondere all'SDK per iOS, abbiamo cambiato il nome del modulo da InteractiveMediaAds
a GoogleInteractiveMediaAds.
| Modifiche | |
|---|---|
| Vecchio |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
| Nuovo |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
| Vecchio |
@import InteractiveMediaAds; |
| Nuovo |
@import GoogleInteractiveMediaAds; |
Crea il nuovo contenitore di annunci
Il IMAAdDisplayContainer è responsabile della gestione della vista del contenitore di annunci e
le aree annuncio companion utilizzate per la riproduzione.
| Modifiche | |
|---|---|
| Vecchio | Non esiste una versione precedente equivalente. |
| Nuovo |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Passare IMAVideoDisplay e IMAAdDisplayContainer all'IMAStreamRequest
Ora che hai un display video e IMAAdDisplayContainer, devi superare
alla richiesta di streaming in modo che l'SDK IMA DAI possa gestirli.
| Modifiche | |
|---|---|
| Vecchio |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
| Nuovo |
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 | |
|---|---|
| Vecchio |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
| Nuovo | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Implementa IMAAdsLoaderDelegate per l'inizializzazione dello stream
Queste funzioni sono state rinominate e modificate per coerenza con iOS l'SDK. È cambiata anche la relazione tra il gestore dello stream e lo stream. Nella SDK v3, un unico gestore di stream potrebbe essere utilizzato per gestire più stream. Nella versione 4, Ogni gestore di stream può gestire un solo stream.
| Modifiche | |
|---|---|
| Vecchio |
- (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]; } |
| Nuovo |
- (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]; } |
Implementa IMAStreamManagerDelega
Per garantire la coerenza con gli SDK per iOS, l'SDK tvOS ora fornisce un unico stream
delegato dell'amministratore, IMAStreamManagerDelegate, per la gestione degli eventi di flusso. Tu
ora devi utilizzare un'istruzione di switch all'interno del delegato per gestire
eventi.
| Modifiche | |
|---|---|
| Vecchio |
- (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; } |
| Nuovo |
- (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; } } |