Os SDKs do IMA para a DAI do tvOS e o tvOS no lado do cliente foram mesclados na versão 4 e reformulados como um subconjunto exato do SDK do iOS. Isso reduz significativamente a curva de aprendizado para desenvolvedores iOS. Como resultado, parte do código necessário para usuários da DAI foi alterado para ser mais consistente com nossos outros SDKs.
Este guia explica o processo necessário para fazer upgrade de uma implementação existente da v3 para o novo SDK v4.
Em caso de dúvida, consulte os exemplos de DAI do iOS. A API tvOS v4 é a mesma (exceto para complementares e PIP, que não estão disponíveis no tvOS).
Mudar o nome do módulo
Para corresponder ao SDK do iOS, mudamos o nome do módulo de InteractiveMediaAds
para GoogleInteractiveMediaAds
.
Mudou | |
---|---|
Antiga |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Novo |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Antiga |
@import InteractiveMediaAds; |
Novo |
@import GoogleInteractiveMediaAds; |
Criar o novo contêiner de anúncios
O IMAAdDisplayContainer
é responsável por gerenciar a visualização do contêiner de anúncios e
os espaços dos anúncios complementares usados para a reprodução do anúncio.
Mudou | |
---|---|
Antiga | Não há equivalente anterior. |
Novo |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Transmita o IMAVideoDisplay e o IMAAdDisplayContainer para o IMAStreamRequest
Agora que você tem uma exibição de vídeo e IMAAdDisplayContainer,
, é necessário transmiti-los
à solicitação de stream para que o SDK do IMA possa gerenciá-los.
Mudou | |
---|---|
Antiga |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Novo |
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]; |
Solicitar com um IMAAdsLoader
Mudou | |
---|---|
Antiga |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Novo | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Implementar IMAAdsLoaderDelegate para inicialização do stream
Essas funções foram renomeadas e modificadas para serem consistentes com o SDK do iOS. A relação entre o gerenciador e a transmissão também mudou. No SDK v3, um único gerenciador de streams pode ser usado para gerenciar vários streams. Na v4, cada gerenciador de stream só pode gerenciar um único stream.
Mudou | |
---|---|
Antiga |
- (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]; } |
Novo |
- (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]; } |
Implementar IMAStreamManagerDelegate
Para manter a consistência com os SDKs do iOS, o SDK do tvOS agora oferece um único delegado do gerenciador de streams, IMAStreamManagerDelegate
, para processar eventos de stream. Agora você precisa usar uma instrução switch dentro desse delegado para gerenciar eventos específicos.
Mudou | |
---|---|
Antiga |
- (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; } |
Novo |
- (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; } } |