O SDK de DAI do IMA e o SDK do lado do cliente do IMA foram mesclados na versão 4. e foram reformulados como um subconjunto exato do SDK para iOS. Isso significativamente reduz a curva de aprendizado para desenvolvedores iOS. Como resultado, parte do código necessária para usuários da DAI foi alterada para ser mais consistente com nossos outros SDKs.
Este guia explica o processo necessário para fazer upgrade de uma versão v3 existente implementação para o novo SDK v4.
Em caso de dúvida, consulte o Amostras de DAI para iOS A API tvOS v4 é a mesma (exceto para complementares e PIP, que não estão tvOS).
Mudar o nome do módulo
Para corresponder ao SDK do iOS, mudamos o nome do módulo de InteractiveMediaAds
para GoogleInteractiveMediaAds
.
Mudanças | |
---|---|
Antigo |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Novo |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Antigo |
@import InteractiveMediaAds; |
Novo |
@import GoogleInteractiveMediaAds; |
Crie o novo contêiner do anúncio
O IMAAdDisplayContainer
é responsável por gerenciar a visualização do contêiner de anúncios e
espaços de anúncios complementares
usados para reprodução de anúncios.
Mudanças | |
---|---|
Antigo | Não há equivalente anterior. |
Novo |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Transmitir o IMAVideoDisplay e o IMAAdDisplayContainer para o IMAStreamRequest
Agora que você tem uma tela de vídeo e IMAAdDisplayContainer,
, é preciso transmitir
à solicitação de stream para que o SDK de DAI do IMA possa gerenciá-los.
Mudanças | |
---|---|
Antigo |
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]; |
Solicitação com um IMAAdsLoader
Mudanças | |
---|---|
Antigo |
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 fluxo
Essas funções foram renomeadas e modificadas para ficarem consistentes com o SDK do Vertex AI Pipelines. A relação entre o gerenciador e a transmissão também mudou. Na v3, um único gerenciador de streams pode ser usado para gerenciar vários streams. Na v4, Cada gerenciador de transmissões pode administrar somente uma transmissão.
Mudanças | |
---|---|
Antigo |
- (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 fornece um único stream
delegado de gerenciador, IMAStreamManagerDelegate
, para processar eventos de stream. Você
agora precisa usar uma instrução switch dentro desse delegado para gerenciar
eventos.
Mudanças | |
---|---|
Antigo |
- (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; } } |