SDK IMA DAI và SDK phía máy khách IMA đã được hợp nhất trong phiên bản 4, và đã được thiết kế lại thành một tập hợp con chính xác của SDK iOS. Điều này đáng kể giúp nhà phát triển iOS mất nhiều thời gian để học hỏi hơn. Do đó, một số mã bắt buộc đối với người dùng DAI đã thay đổi để nhất quán hơn với các SDK khác của chúng tôi.
Hướng dẫn này trình bày quy trình cần thiết để nâng cấp phiên bản 3 hiện có cho SDK phiên bản 4 mới.
Nếu nghi ngờ, hãy tham khảo Mẫu DAI trên iOS– API tvOS v4 vẫn giữ nguyên (ngoại trừ quảng cáo đồng hành và PIP không có sẵn trên tvOS).
Thay đổi tên mô-đun
Để phù hợp với SDK iOS, chúng tôi đã thay đổi tên mô-đun từ InteractiveMediaAds
đến GoogleInteractiveMediaAds
.
Các thay đổi | |
---|---|
Cũ |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Mới |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Cũ |
@import InteractiveMediaAds; |
Mới |
@import GoogleInteractiveMediaAds; |
Tạo vùng chứa quảng cáo mới
IMAAdDisplayContainer
chịu trách nhiệm quản lý chế độ xem vùng chứa quảng cáo và
vùng quảng cáo đồng hành được dùng để phát lại quảng cáo.
Các thay đổi | |
---|---|
Cũ | Không có phiên bản trước nào tương đương. |
Mới |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Chuyển IMAVideoDisplay và IMAAdDisplayContainer vào IMAStreamRequest
Giờ bạn đã có màn hình video và IMAAdDisplayContainer,
bạn cần truyền
chúng đến yêu cầu luồng để SDK IMA DAI có thể quản lý chúng.
Các thay đổi | |
---|---|
Cũ |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Mới |
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]; |
Yêu cầu bằng IMAAdsLoader
Các thay đổi | |
---|---|
Cũ |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Mới | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Triển khai IMAAdsLoaderDelegate để khởi chạy luồng
Các hàm này đã được đổi tên và sửa đổi để nhất quán với iOS SDK. Mối quan hệ giữa người quản lý sự kiện phát trực tiếp và sự kiện phát trực tiếp cũng đã thay đổi. Trong SDK phiên bản 3, một trình quản lý luồng duy nhất có thể được dùng để quản lý nhiều luồng. Trong phiên bản 4, mỗi người quản lý sự kiện phát trực tiếp chỉ có thể quản lý một sự kiện phát trực tiếp duy nhất.
Các thay đổi | |
---|---|
Cũ |
- (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]; } |
Mới |
- (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]; } |
Triển khai IMAStreamManagerDelegate
Để nhất quán với SDK iOS, SDK tvOS hiện cung cấp một luồng duy nhất
uỷ quyền của người quản lý, IMAStreamManagerDelegate
, để xử lý các sự kiện trong luồng. Bạn
bây giờ cần sử dụng một câu lệnh chuyển đổi trong
uỷ quyền đó để quản lý cụ thể
sự kiện.
Các thay đổi | |
---|---|
Cũ |
- (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; } |
Mới |
- (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; } } |