การอัปเกรด DAI v3 เป็น v4

IMA DAI SDK และ SDK ฝั่งไคลเอ็นต์ IMA ได้ผสานรวมไว้ในเวอร์ชัน 4 แล้ว และได้รับการปรับปรุงใหม่เป็นส่วนหนึ่งของ iOS SDK ซึ่งมีนัยสำคัญ ช่วยลดขั้นตอนการเรียนรู้ให้กับนักพัฒนา iOS ด้วยเหตุนี้ รหัสที่จําเป็นสําหรับผู้ใช้ DAI จึงมีการเปลี่ยนแปลงเพื่อให้สอดคล้องกับ SDK อื่นๆ มากขึ้น

คู่มือนี้จะอธิบายถึงขั้นตอนที่จำเป็นในการอัปเกรด v3 ที่มีอยู่ กับ SDK เวอร์ชัน 4 ใหม่

หากมีข้อสงสัย โปรดปรึกษา ตัวอย่าง iOS DAI tvOS v4 API เหมือนกัน (ยกเว้นการแสดงร่วมและ PIP ซึ่งไม่พร้อมใช้งานบน tvOS)

เปลี่ยนชื่อโมดูล

เราได้เปลี่ยนชื่อโมดูลจาก InteractiveMediaAds เพื่อให้ตรงกับ iOS SDK ไปยัง GoogleInteractiveMediaAds

การเปลี่ยนแปลง
เก่า

#import <InteractiveMediaAds/InteractiveMediaAds.h>
ใหม่

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
เก่า

@import InteractiveMediaAds;
ใหม่

@import GoogleInteractiveMediaAds;

สร้างคอนเทนเนอร์โฆษณาใหม่

IMAAdDisplayContainer มีหน้าที่จัดการมุมมองคอนเทนเนอร์โฆษณาและ ช่องโฆษณาที่แสดงร่วมที่ใช้สำหรับการเล่นโฆษณา

การเปลี่ยนแปลง
เก่า ไม่มีรายการที่เทียบเท่ามาก่อน
ใหม่

self.adDisplayContainer =
    [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView];

ส่ง IMAVideoDisplay และ IMAAdDisplayContainer ไปยัง IMAStreamRequest

ตอนนี้คุณมีจอแสดงผลวิดีโอและIMAAdDisplayContainer, ไปยังคำขอสตรีมเพื่อให้ IMA DAI SDK จัดการได้

การเปลี่ยนแปลง
เก่า

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey];
IMAVODStreamRequest *streamRequest =
    [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID
                                                 videoID:kVideoID];
ใหม่

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

การเปลี่ยนแปลง
เก่า

self.streamManager =
    [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay];
self.streamManager.delegate = self;
[self.streamManager requestStream:streamRequest];
ใหม่

self.adsLoader = [[IMAAdsLoader alloc] init];
self.adsLoader.delegate = self;
[self.adsLoader requestStreamWithRequest:streamRequest];

ใช้งาน IMAAdsLoaderDelegate สำหรับการเริ่มต้นสตรีม

ฟังก์ชันเหล่านี้ได้รับการเปลี่ยนชื่อและแก้ไขให้สอดคล้องกับ iOS SDK ความสัมพันธ์ระหว่างผู้จัดการสตรีมกับสตรีมก็มีการเปลี่ยนแปลงเช่นกัน ใน v3 SDK ซึ่งเป็นตัวจัดการสตรีมเดียวสามารถใช้จัดการสตรีมหลายรายการได้ ในเวอร์ชัน 4 ผู้จัดการสตรีมแต่ละรายจะจัดการสตรีมได้เพียงรายการเดียวเท่านั้น

การเปลี่ยนแปลง
เก่า

- (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];
}
ใหม่

- (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

ตอนนี้ tvOS SDK ให้บริการสตรีมเดียวเพื่อให้สอดคล้องกับ SDK ของ iOS ผู้รับมอบสิทธิ์ผู้จัดการ IMAStreamManagerDelegate สำหรับจัดการเหตุการณ์สตรีม คุณ คุณต้องใช้คำสั่งสวิตช์ภายในผู้รับมอบสิทธิ์นั้นเพื่อจัดการ กิจกรรม

การเปลี่ยนแปลง
เก่า

- (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;
}
ใหม่

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