IMA DAI SDK 和 IMA 用戶端 SDK 已經合併到第 4 版。 且已完全重塑為 iOS SDK 的子集。這對使用者來說 減少 iOS 開發人員的學習曲線。因此,其中一些程式碼 動態廣告插播 (DAI) 使用者專用的必要變更,以便與其他 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 裝置的 將機器學習工作流程自動化直播管理員與直播之間的關係也已變更。在 第 3 版 SDK,一個串流管理工具可用於管理多個串流。在第 4 版中 每個串流管理員只能管理一個直播。
異動 | |
---|---|
舊 |
- (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
),用於處理串流事件。個人中心
現在,必須在委派代表中使用切換陳述式,管理
事件。
異動 | |
---|---|
舊 |
- (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; } } |