SDK IMA cho phía máy khách của DAI và tvOS đã được hợp nhất trong phiên bản 4 và được thiết kế lại dưới dạng một tập hợp con chính xác của SDK iOS. Điều này giúp làm giảm đáng kể thời gian tìm hiểu cho nhà phát triển iOS. Do đó, một số mã cần thiết cho 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 quy trình triển khai phiên bản 3 hiện có lên SDK phiên bản 4 mới.
Nếu bạn không chắc chắn, hãy tham khảo mẫu DAI cho iOS – API tvOS phiên bản 4 đều giống nhau (ngoại trừ quảng cáo đồng hành và PIP không có 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
thành 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ý khung hiển thị vùng chứa quảng cáo và
vùng quảng cáo đồng hành dùng để phát quảng cáo.
Các thay đổi | |
---|---|
Cũ | Không có phiên bản tương đương nào trước đó. |
Mới |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Chuyển IMAVideoDisplay và IMAAdDisplayContainer vào IMAStreamRequest
Giờ đây, bạn đã có màn hình video và IMAAdDisplayContainer,
bạn cần chuyển các hình ảnh đó đến yêu cầu phát trực tiếp để SDK IMA 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 IMAAdsLoaderLoader để khởi chạy luồng
Các hàm này đã được đổi tên cũng như sửa đổi để phù hợp với SDK iOS. Mối quan hệ giữa người quản lý luồng và luồng cũng đã thay đổi. Trong SDK phiên bản 3, bạn có thể sử dụng một trình quản lý luồng duy nhất để quản lý nhiều luồng. Trong v4, mỗi người quản lý luồng chỉ có thể quản lý một trình 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
thực thể đại diện
trình quản lý luồng duy nhất, IMAStreamManagerDelegate
, để xử lý các sự kiện phát trực tiếp. Bây giờ, bạn cần sử dụng câu lệnh chuyển đổi trong uỷ quyền đó để quản lý các sự kiện cụ thể.
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; } } |