DAI v3'ten v4'e yükseltme

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;
  }
}