tvOS DAI 및 tvOS 클라이언트 측용 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 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에서 각 스트림 관리자는 하나의 스트림만 관리할 수 있습니다.
변경사항 | |
---|---|
변경 전 |
- (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; } } |