Le SDK IMA DAI et le SDK IMA côté client ont été fusionnés dans la version 4, et ont été retravaillés comme un sous-ensemble exact du SDK iOS. Cela considérablement ce qui réduit la phase d'apprentissage pour les développeurs iOS. Par conséquent, une partie du code requises pour les utilisateurs de l'insertion dynamique d'annonce sont désormais plus cohérentes avec nos autres SDK.
Ce guide décrit le processus requis pour mettre à niveau une version 3 existante. vers la nouvelle version 4 du SDK.
En cas de doute, consultez le Exemples d'insertion dynamique d'annonces 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
à GoogleInteractiveMediaAds
.
Modifications | |
---|---|
Ancienne version |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Nouveau |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Ancienne version |
@import InteractiveMediaAds; |
Nouveau |
@import GoogleInteractiveMediaAds; |
Créer un conteneur d'annonces
Le IMAAdDisplayContainer
est responsable de la gestion de la vue du conteneur d'annonces et
les espaces publicitaires associés
utilisés pour la lecture des annonces.
Modifications | |
---|---|
Ancienne version | Il n'existe aucun équivalent précédent. |
Nouveau |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Transmettre les éléments "IMAVideoDisplay" et "IMAAdDisplayContainer" à "IMAStreamRequest"
Maintenant que vous disposez d'un affichage vidéo et IMAAdDisplayContainer,
, vous devez transmettre
à la demande de flux pour que
le SDK IMA DAI puisse les gérer.
Modifications | |
---|---|
Ancienne version |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Nouveau |
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
Modifications | |
---|---|
Ancienne version |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Nouveau | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Implémenter IMAAdsLoaderDelegate pour l'initialisation du flux
Ces fonctions ont été renommées et modifiées pour être cohérentes avec SDK. La relation entre le gestionnaire de flux et le flux a également changé. Dans v3, un seul gestionnaire de flux permet de gérer plusieurs flux. Dans la v4, chaque gestionnaire de flux ne peut gérer qu'un seul flux.
Modifications | |
---|---|
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]; } |
Nouveau |
- (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émenter IMAStreamManagerDelegate
Pour assurer la cohérence avec les SDK iOS, le SDK tvOS fournit désormais un flux unique
le délégué de gestion IMAStreamManagerDelegate
, qui permet de gérer les événements de flux. Toi
vous devez maintenant utiliser une instruction "switch" au sein de ce délégué pour gérer des
événements.
Modifications | |
---|---|
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; } |
Nouveau |
- (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; } } |