IMA DAI SDK dan IMA SDK sisi klien IMA telah digabungkan dalam versi 4, dan telah dikerjakan ulang sebagai bagian yang tepat dari SDK iOS. Kemampuan ini secara signifikan mengurangi kurva pembelajaran bagi developer iOS. Hasilnya, beberapa kode yang diwajibkan untuk pengguna DAI telah diubah agar lebih konsisten dengan SDK kami yang lain.
Panduan ini membahas proses yang diperlukan untuk mengupgrade versi v3 yang sudah ada ke SDK v4 yang baru.
Jika ragu, lihat Contoh DAI iOS the tvOS v4 API sama (kecuali untuk pendamping dan PIP, yang tidak tersedia di TVOS).
Mengubah nama modul
Untuk mencocokkan dengan iOS SDK, kami telah mengubah nama modul dari InteractiveMediaAds
ke 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]; |
Meneruskan IMAVideoDisplay dan IMAAdDisplayContainer ke dalam IMAStreamRequest
Setelah Anda memiliki tampilan video dan IMAAdDisplayContainer,
, Anda harus lulus
ke permintaan streaming agar IMA DAI 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]; |
Permintaan 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 streaming
Fungsi-fungsi ini telah diganti namanya dan dimodifikasi agar konsisten dengan SDK. Hubungan antara pengelola streaming dan streaming juga telah berubah. Di kolom SDK v3, pengelola streaming tunggal dapat digunakan untuk mengelola beberapa streaming. Pada 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 streaming
delegasi pengelola, IMAStreamManagerDelegate
, untuk menangani peristiwa streaming. Anda
sekarang perlu menggunakan pernyataan switch di
dalam delegasi tersebut untuk mengelola
peristiwa.
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; } } |