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