IMA SDK untuk DAI tvOS dan Sisi klien tvOS telah digabungkan di versi 4, dan telah dikerjakan ulang sebagai subset yang tepat dari SDK iOS. Hal ini secara signifikan mengurangi kurva pembelajaran bagi developer iOS. Akibatnya, beberapa kode yang diperlukan untuk pengguna DAI telah diubah agar lebih konsisten dengan SDK kami yang lain.
Panduan ini membahas proses yang diperlukan untuk mengupgrade implementasi v3 yang sudah ada ke SDK v4 yang baru.
Jika ragu, lihat contoh DAI iOS; API tvOS v4 sama (kecuali untuk pendamping dan PIP, yang tidak tersedia di tvOS).
Mengubah nama modul
Agar cocok dengan iOS SDK, kami telah mengubah nama modul dari InteractiveMediaAds
menjadi GoogleInteractiveMediaAds
.
Perubahan | |
---|---|
Lama |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Baru |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Lama |
@import InteractiveMediaAds; |
Baru |
@import GoogleInteractiveMediaAds; |
Membuat penampung iklan baru
IMAAdDisplayContainer
bertanggung jawab untuk mengelola tampilan penampung iklan dan
slot iklan pengiring yang digunakan untuk pemutaran iklan.
Perubahan | |
---|---|
Lama | Tidak ada padanan sebelumnya. |
Baru |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
Teruskan IMAVideoDisplay dan IMAAdDisplayContainer ke dalam IMAStreamRequest
Setelah memiliki tampilan video dan IMAAdDisplayContainer,
, Anda harus meneruskannya
ke permintaan streaming agar IMA SDK dapat mengelolanya.
Perubahan | |
---|---|
Lama |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Baru |
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]; |
Meminta dengan IMAAdsLoader
Perubahan | |
---|---|
Lama |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Baru | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Menerapkan IMAAdsLoaderDelegate untuk inisialisasi aliran data
Fungsi ini telah diganti namanya dan diubah agar konsisten dengan iOS SDK. Hubungan antara pengelola streaming dan streaming juga telah berubah. Di SDK v3, satu pengelola streaming dapat digunakan untuk mengelola beberapa streaming. Di v4, setiap pengelola streaming hanya dapat mengelola satu streaming.
Perubahan | |
---|---|
Lama |
- (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]; } |
Baru |
- (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]; } |
Menerapkan IMAStreamManagerDelegate
Agar konsisten dengan SDK iOS, SDK tvOS kini menyediakan satu delegasi pengelola streaming, IMAStreamManagerDelegate
, untuk menangani peristiwa streaming. Kini Anda perlu menggunakan pernyataan switch dalam delegasi tersebut untuk mengelola peristiwa tertentu.
Perubahan | |
---|---|
Lama |
- (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; } |
Baru |
- (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; } } |