IMA DAI SDK'sı ve IMA istemci tarafı SDK'sı sürüm 4'te birleştirilmiştir. ve iOS SDK'sının bire bir alt kümesi olarak yeniden işlenmiştir. Bu, önemli ölçüde iOS geliştiricilerinin öğrenme eğrisini kısaltır. Sonuç olarak, kodun bir kısmı diğer SDK'larımızla daha tutarlı olacak şekilde değiştirilmiştir.
Bu kılavuzda, mevcut bir v3'ü yeni sürüme geçirmek için gerekli işlemler açıklanmaktadır. yeni v4 SDK'ya uygulanması.
Emin değilseniz iOS DAI örnekleri; tvOS v4 API aynıdır (şurada kullanılamayan tamamlayıcılar ve PIP hariç: tvOS) ile çalışır.
Modül adını değiştirme
iOS SDK'sı ile eşleşmesi için InteractiveMediaAds
olan modül adını değiştirdik
Hedef: GoogleInteractiveMediaAds
.
Değişiklikler | |
---|---|
Önceki |
#import <InteractiveMediaAds/InteractiveMediaAds.h> |
Yeni |
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h> |
Önceki |
@import InteractiveMediaAds; |
Yeni |
@import GoogleInteractiveMediaAds; |
Yeni reklam kapsayıcısını oluşturma
IMAAdDisplayContainer
, reklam kapsayıcısı görünümünü yönetmekten ve
Reklam oynatma için kullanılan tamamlayıcı reklam alanları
Değişiklikler | |
---|---|
Önceki | Önceden bir eşdeğeri yoktur. |
Yeni |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
IMAVideoDisplay ve IMAAdDisplayContainer öğelerini IMAStreamRequest'e iletme
Görüntülü Reklam Ağı'na sahipsiniz ve IMAAdDisplayContainer,
atmanız gerekiyor.
IMA DAI SDK'sının bunları yönetebilmesi için bunları akış isteğine eklemesi gerekir.
Değişiklikler | |
---|---|
Önceki |
IMALiveStreamRequest *streamRequest = [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey]; IMAVODStreamRequest *streamRequest = [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID videoID:kVideoID]; |
Yeni |
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 ile istek
Değişiklikler | |
---|---|
Önceki |
self.streamManager = [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay]; self.streamManager.delegate = self; [self.streamManager requestStream:streamRequest]; |
Yeni | self.adsLoader = [[IMAAdsLoader alloc] init]; self.adsLoader.delegate = self; [self.adsLoader requestStreamWithRequest:streamRequest]; |
Akış başlatma için IMAAdsLoaderDelegate'i uygulama
Bu işlevler iOS ile tutarlı olacak şekilde yeniden adlandırıldı ve değiştirildi SDK'dır. Akış yöneticisi ile akış arasındaki ilişki de değişti. birden fazla akışı yönetmek için tek bir akış yöneticisi kullanılabilir. Sürüm 4'te her akış yöneticisi yalnızca tek bir akışı yönetebilir.
Değişiklikler | |
---|---|
Önceki |
- (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]; } |
Yeni |
- (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'i uygulama
tvOS SDK, iOS SDK'larıyla tutarlılık için artık tek bir akış sağlıyor.
akış etkinliklerini yönetmek için yönetici temsilcisi (IMAStreamManagerDelegate
). Siz
belirli bir e-posta adresine sahip olan kullanıcıyı yönetmek için
etkinlikler.
Değişiklikler | |
---|---|
Önceki |
- (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; } |
Yeni |
- (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; } } |