Das IMA DAI SDK und das clientseitige IMA SDK wurden in Version 4 zusammengeführt. und wurden als Teil des iOS-SDK überarbeitet. Das ist wesentlich verkürzt die Einarbeitungszeit für iOS-Entwickler. Daher kann ein Teil des Codes die für Nutzer der dynamischen Anzeigenbereitstellung erforderlich sind, wurden geändert, um sie an unsere anderen SDKs anzupassen.
Dieser Leitfaden führt Sie durch den Prozess, der für das Upgrade einer vorhandenen Version 3 Implementierung des neuen SDK v4.
Im Zweifelsfall finden Sie weitere Informationen in der Beispiele für die dynamische Anzeigenbereitstellung unter iOS – die Die tvOS v4 API ist identisch (mit Ausnahme von Companions und PIP, die nicht verfügbar sind auf tvOS).
Modulnamen ändern
Um dem iOS SDK zu entsprechen, haben wir den Modulnamen von InteractiveMediaAds
geändert
an GoogleInteractiveMediaAds
.
Ä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 Anzeigencontainer-Ansicht und
Companion-Anzeigenflächen, die für die Anzeigenwiedergabe verwendet werden.
Änderungen | |
---|---|
Alt | Es gibt kein vorheriges Äquivalent. |
Neu |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
IMAVideoDisplay und IMAAdDisplayContainer an IMAStreamRequest übergeben
Sie haben jetzt eine Videoanzeige und IMAAdDisplayContainer,
müssen
der Streamanfrage zu, damit sie mit dem IMA DAI 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]; |
Mit IMAAdsLoader anfordern
Ä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 die Stream-Initialisierung implementieren
Diese Funktionen wurden umbenannt und angepasst, damit sie mit der iOS-Version kompatibel sind. SDK. Auch die Beziehung zwischen Stream-Manager und Stream hat sich geändert. Im Version 3 des SDK kann ein einzelner Stream-Manager zur Verwaltung mehrerer Streams verwendet werden. In Version 4 kann jeder Streammanager nur einen 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 Konsistenz mit den iOS-SDKs stellt das tvOS-SDK jetzt einen einzelnen Stream bereit
Manager-Bevollmächtigter, IMAStreamManagerDelegate
, zur Verarbeitung von Streamereignissen. Ich
muss in diesem Delegaten nun eine
switch-Anweisung verwendet werden, um bestimmte
Ereignisse.
Ä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; } } |