DAI v3 から v4 へのアップグレード

IMA DAI SDK と IMA クライアントサイドの SDK はバージョン 4 で統合されました。 iOS SDK と完全に一致するサブセットとして作り直されました。これは大幅に iOS デベロッパーの習得が容易になる。その結果、一部のコードが が、他の SDK との一貫性が向上しました。

このガイドでは、既存の v3 にアップグレードするために必要なプロセスについて説明します。 新しい v4 SDK に統合します。

判断に迷う場合は、 iOS DAI サンプル - tvOS v4 API は同じ(ただし、コンパニオンと PIP は例外で、 tvOS)。

モジュール名を変更する

iOS SDK に合わせて、モジュール名を InteractiveMediaAds から変更しました。 宛先: GoogleInteractiveMediaAds

変更回数

#import <InteractiveMediaAds/InteractiveMediaAds.h>
新規

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>

@import InteractiveMediaAds;
新規

@import GoogleInteractiveMediaAds;

新しい広告コンテナを作成する

IMAAdDisplayContainer は、広告コンテナのビューを管理する役割と、 使用されるコンパニオン広告スロットが含まれます。

変更回数
これに相当するものはありません。
新規

self.adDisplayContainer =
    [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView];

IMAVideoDisplay と IMAAdDisplayContainer を IMAStreamRequest に渡す

動画ディスプレイが用意できたので、IMAAdDisplayContainer, に合格する必要があります。 ストリーム リクエストに追加して、IMA DAI SDK で管理できるようにする必要があります。

変更回数

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey];
IMAVODStreamRequest *streamRequest =
    [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID
                                                 videoID:kVideoID];
新規

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

IMAAdsLoader を使用してリクエストする

変更回数

self.streamManager =
    [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay];
self.streamManager.delegate = self;
[self.streamManager requestStream:streamRequest];
新規

self.adsLoader = [[IMAAdsLoader alloc] init];
self.adsLoader.delegate = self;
[self.adsLoader requestStreamWithRequest:streamRequest];

ストリームを初期化するために IMAAdsLoaderDelegate を実装する

これらの関数は、iOS に合わせて名前と変更が行われています。 できます。ストリーム マネージャーとストリームの関係も変わりました。 v3 SDK では、単一のストリーム マネージャーで複数のストリームを管理できます。v4 では、 各ストリームマネージャーが管理できるストリームは 1 つだけです

変更回数

- (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];
}
新規

- (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 を実装する

iOS SDK との整合性を保つため、tvOS SDK は単一のストリームを提供するようになりました ストリーム イベントを処理するためのマネージャー デリゲート、IMAStreamManagerDelegate。マイページ デリゲート内で switch ステートメントを使用して、 できます。

変更回数

- (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;
}
新規

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