Upgrade der dynamischen Anzeigenbereitstellung von Version 3 auf Version 4

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