Mengupgrade dari v3 ke v4

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