El SDK de IMA de DAI y el SDK del cliente de IMA se combinaron en la versión 4. y se modificaron como un subconjunto exacto del SDK de iOS. Esto reduce la curva de aprendizaje para los desarrolladores de iOS. Como resultado, parte del código requeridas para los usuarios de la DAI cambiaron para ser más coherentes con nuestros otros SDKs.
En esta guía, se explica el proceso necesario para actualizar una versión 3 existente implementación en la nueva versión 4 del SDK.
Si tienes alguna duda, consulta el Muestras de DAI de iOS: La API de tvOS v4 es la misma (excepto para los complementos y PIP, que no están disponibles en tvOS).
Cómo cambiar el nombre del módulo
Para que coincida con el SDK de iOS, cambiamos el nombre del módulo de InteractiveMediaAds
.
a GoogleInteractiveMediaAds
.
Cambios | |
---|---|
Antiguo |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Nuevo |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Antiguo |
@import InteractiveMediaAds; |
Nuevo |
@import GoogleInteractiveMediaAds; |
Crea el contenedor de anuncios nuevo
IMAAdDisplayContainer
se encarga de administrar la vista del contenedor de anuncios y
Los espacios publicitarios complementarios que se usan para la reproducción de anuncios.
Cambios | |
---|---|
Antiguo | No hay un equivalente anterior. |
Nuevo |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Pasa los elementos IMAVideoDisplay y IMAAdDisplayContainer a IMAStreamRequest
Ahora que tienes una pantalla de video y IMAAdDisplayContainer,
, debes pasar
a la solicitud de transmisión para que el SDK de IMA de DAI pueda administrarlos.
Cambios | |
---|---|
Antiguo |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Nuevo |
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]; |
Cómo realizar una solicitud con un elemento IMAAdsLoader
Cambios | |
---|---|
Antiguo |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Nuevo | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Implementa IMAAdsLoaderDelegate para la inicialización de transmisión
Se cambió el nombre de estas funciones y se modificaron para que sean coherentes con la versión de iOS de Google Cloud. También cambió la relación entre el administrador de transmisiones y la transmisión. En la v3, se podría usar un solo administrador de transmisiones para administrar varias transmisiones. En la versión 4, cada administrador de transmisiones solo puede administrar una única transmisión.
Cambios | |
---|---|
Antiguo |
- (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]; } |
Nuevo |
- (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 IMAStreamManagerDelegate
Para mantener la coherencia con los SDK de iOS, el SDK de tvOS ahora proporciona una sola transmisión.
y delegado de administrador, IMAStreamManagerDelegate
, para controlar los eventos de transmisión. Tú
debes usar una sentencia switch dentro de ese delegado para administrar
eventos.
Cambios | |
---|---|
Antiguo |
- (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; } |
Nuevo |
- (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; } } |