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