IMA DAI SDK 및 IMA 클라이언트 측 SDK는 버전 4에서 병합되었습니다. iOS SDK의 정확한 하위 집합으로 재작업되었습니다. 이로 인해 iOS 개발자의 학습 부담을 줄여줍니다. 따라서 일부 코드는 DAI 사용자에게 필요한 표준이 Google의 다른 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 사용할 수 있습니다 스트림 관리자와 스트림 간의 관계도 변경되었습니다. v3 SDK에서는 단일 스트림 관리자를 사용하여 여러 스트림을 관리할 수 있습니다. v4에서는 각 스트림 관리자는 하나의 스트림만 관리할 수 있습니다.
변경사항 | |
---|---|
변경 전 |
- (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; } } |