tvOS DAI ve tvOS İstemci tarafı için IMA SDK'lar, sürüm 4'te birleştirildi ve iOS SDK'nın tam bir alt kümesi olarak yeniden işlenmiştir. Bu da iOS geliştiricilerinin öğrenme eğrisini önemli ölçüde kısaltıyor. Bunun sonucunda, DAI kullanıcıları için gerekli olan bazı kodlar diğer SDK'larımızla daha tutarlı olacak şekilde değiştirilmiştir.
Bu kılavuzda, mevcut bir v3 uygulamasını yeni v4 SDK'sına yükseltmek için gereken süreç açıklanmaktadır.
Emin değilseniz iOS DAI örneklerine bakın. tvOS v4 API aynıdır (tvOS'de kullanılamayan tamamlayıcılar ve PIP hariç).
Modül adını değiştirme
iOS SDK ile eşleştirmek için InteractiveMediaAds
olan modül adını GoogleInteractiveMediaAds
olarak değiştirdik.
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ü ve reklam oynatma için kullanılan tamamlayıcı reklam alanlarını yönetmekten sorumludur.
Değişiklikler | |
---|---|
Önceki | Daha önce eşdeğeri yoktur. |
Yeni |
self.adDisplayContainer = [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView]; |
IMAVideoDisplay ve IMAAdDisplayContainer'ı IMAStreamRequest'e iletme
Artık video görüntülü reklamınız ve IMAAdDisplayContainer,
olduğuna göre, IMA SDK'nın yönetebilmesi için bunları akış isteğine iletmeniz 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 İstek
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 IMAAdsLoaderPause'ı uygulama
Bu işlevler, iOS SDK'sı ile tutarlı olacak şekilde yeniden adlandırıldı ve değiştirildi. Akış yöneticisi ile yayın arasındaki ilişki de değişti. v3 SDK'sında birden fazla akışı yönetmek için tek bir akış yöneticisi kullanılabilir. v4'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]; } |
IMAStreamManagerManager'ı uygulama
iOS SDK'larıyla tutarlılık sağlamak amacıyla tvOS SDK'sı artık akış etkinliklerini yönetmek için tek bir akış yöneticisi temsilcisi (IMAStreamManagerDelegate
) sağlıyor. Artık belirli etkinlikleri yönetmek için bu yetki verilmiş kullanıcı içinde bir Switch ifadesi kullanmanız gerekir.
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; } } |