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