IMA DAI SDK と IMA クライアント側 SDK はバージョン 4 に統合され、iOS SDK のサブセットとして再構築されました。これにより、iOS デベロッパーの学習曲線が大幅に短縮されます。その結果、DAI ユーザーに必要なコードの一部が変更され、他の SDK との一貫性が向上しました。
このガイドでは、既存の v3 実装を新しい v4 SDK にアップグレードするために必要なプロセスについて説明します。
判断に迷う場合は、iOS DAI サンプルをご覧ください。tvOS v4 API は同じです(tvOS で使用できないコンパニオンと PIP を除く)。
モジュール名を変更する
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 SDK に合わせて名前が変更され、変更されています。ストリーム管理者とストリームの関係も変わりました。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; } } |