Upgrade der dynamischen Anzeigenbereitstellung von Version 3 auf Version 4

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;
  }
}