Die IMA SDKs für die dynamische Anzeigenbereitstellung für tvOS und die clientseitige Verwendung von tvOS wurden in Version 4 zusammengeführt und als exakter Teil des iOS SDK überarbeitet. Das verkürzt die Einarbeitungszeit für iOS-Entwickler erheblich. Aus diesem Grund wurde ein Teil des Codes, der für Nutzer der dynamischen Anzeigenbereitstellung erforderlich ist, geändert und an unsere anderen SDKs angepasst.
In diesem Leitfaden wird beschrieben, wie Sie eine vorhandene Implementierung von Version 3 auf das neue SDK 4 aktualisieren.
Sehen Sie sich im Zweifelsfall die Beispiele für die dynamische Anzeigenbereitstellung für iOS an. Die tvOS v4 API ist identisch (mit Ausnahme von Companions und PIP, die unter tvOS nicht verfügbar sind).
Modulnamen ändern
Dementsprechend wurde der Modulname von InteractiveMediaAds
in GoogleInteractiveMediaAds
geändert.
Änderungen | |
---|---|
Alt |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Neu |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Alt |
@import InteractiveMediaAds; |
Neu |
@import GoogleInteractiveMediaAds; |
Neuen Anzeigencontainer erstellen
Der IMAAdDisplayContainer
ist für die Verwaltung der Anzeigencontaineransicht und der Companion-Anzeigenflächen für die Anzeigenwiedergabe verantwortlich.
Änderungen | |
---|---|
Alt | Es gibt keine vorherige Entsprechung. |
Neu |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
IMAVideoDisplay und IMAAdDisplayContainer in die IMAStreamRequest übergeben
Da Sie nun eine Videoanzeige und IMAAdDisplayContainer,
haben, müssen Sie sie an die Streamanfrage übergeben, damit sie mit dem IMA SDK verwaltet werden können.
Änderungen | |
---|---|
Alt |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Neu |
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]; |
Anfrage mit IMAAdsLoader
Änderungen | |
---|---|
Alt |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Neu | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
IMAAdsLoaderDelegate für Streaminitialisierung implementieren
Diese Funktionen wurden in Übereinstimmung mit dem iOS SDK umbenannt und geändert. Die Beziehung zwischen Stream-Manager und Stream hat sich ebenfalls geändert. Im SDK v3 können mit einem einzelnen Streammanager mehrere Streams verwaltet werden. In Version 4 kann jeder Streammanager nur einen einzelnen Stream verwalten.
Änderungen | |
---|---|
Alt |
- (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]; } |
Neu |
- (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]; } |
IMAStreamManagerDelegate implementieren
Aus Konsistenzgründen mit den iOS SDKs bietet das tvOS SDK jetzt einen einzelnen Streammanager-Delegaten (IMAStreamManagerDelegate
) für die Verarbeitung von Streamereignissen. Sie müssen jetzt eine Switch-Anweisung innerhalb dieses Delegaten verwenden, um bestimmte Ereignisse zu verwalten.
Änderungen | |
---|---|
Alt |
- (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; } |
Neu |
- (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; } } |