Les SDK IMA pour l'insertion dynamique d'annonce tvOS et le côté client tvOS ont été fusionnés dans la version 4 et retravaillés en tant que sous-ensemble exact du SDK iOS. Cela réduit considérablement la phase d'apprentissage pour les développeurs iOS. Par conséquent, une partie du code requis pour les utilisateurs de l'insertion dynamique d'annonce a été modifiée afin d'être plus cohérent avec nos autres SDK.
Ce guide décrit le processus requis pour mettre à niveau une implémentation de la version 3 existante vers le nouveau SDK v4.
En cas de doute, consultez les exemples d'insertion dynamique d'annonce pour iOS. L'API tvOS v4 est la même (sauf pour les compagnons et PIP, qui ne sont pas disponibles sur tvOS).
Modifier le nom du module
Pour correspondre au SDK iOS, nous avons remplacé le nom du module InteractiveMediaAds
par GoogleInteractiveMediaAds
.
Changements | |
---|---|
Ancienne version |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Nouvelle version |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Ancienne version |
@import InteractiveMediaAds; |
Nouvelle version |
@import GoogleInteractiveMediaAds; |
Créer le conteneur d'annonces
IMAAdDisplayContainer
permet de gérer la vue du conteneur d'annonces et les espaces publicitaires associés utilisés pour la lecture des annonces.
Changements | |
---|---|
Ancienne version | Il n'existe aucun équivalent précédent. |
Nouvelle version |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Transmettez IMAVideoDisplay et IMAAdDisplayContainer à IMAStreamRequest.
Maintenant que vous disposez d'un affichage vidéo et de IMAAdDisplayContainer,
, vous devez les transmettre à la demande de flux afin que le SDK IMA puisse les gérer.
Changements | |
---|---|
Ancienne version |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Nouvelle version |
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]; |
Demande avec un IMAAdsLoader
Changements | |
---|---|
Ancienne version |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Nouvelle version | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Implémenter IMAAdsLoaderLoader pour l'initialisation du flux
Ces fonctions ont été renommées et modifiées par souci de cohérence avec le SDK iOS. La relation entre le gestionnaire de diffusion et la diffusion a également changé. Dans le SDK v3, un seul gestionnaire de flux peut être utilisé pour gérer plusieurs flux. Dans la version 4, chaque gestionnaire de flux ne peut gérer qu'une seule diffusion.
Changements | |
---|---|
Ancienne version |
- (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]; } |
Nouvelle version |
- (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]; } |
Implémentation de IMAStreamManagerdeploy
Par souci de cohérence avec les SDK iOS, le SDK tvOS fournit désormais un seul délégué de gestionnaire de flux, IMAStreamManagerDelegate
, pour gérer les événements de flux. Vous devez maintenant utiliser une instruction switch dans ce délégué pour gérer des événements spécifiques.
Changements | |
---|---|
Ancienne version |
- (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; } |
Nouvelle version |
- (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; } } |