IMA SDK สำหรับฝั่งไคลเอ็นต์ของ tvOS DAI และ tvOS ได้รับการผสานรวมเข้าด้วยกันในเวอร์ชัน 4 และมีการปรับปรุงใหม่ให้เป็นชุดย่อยของ iOS SDK ทั้งหมด วิธีนี้จะช่วยลดเวลาในการเรียนรู้ของนักพัฒนาซอฟต์แวร์ iOS ได้อย่างมาก ด้วยเหตุนี้ โค้ดบางส่วนสำหรับผู้ใช้ DAI จึงมีการเปลี่ยนแปลงให้สอดคล้องกับ SDK อื่นๆ ของเรามากขึ้น
คู่มือนี้จะแนะนำกระบวนการที่จำเป็นในการอัปเกรดการใช้งาน v3 ที่มีอยู่เป็น SDK v4 ใหม่
หากมีข้อสงสัย โปรดอ่านตัวอย่าง iOS DAI ตัวอย่าง tvOS v4 API นั้นเหมือนกัน (ยกเว้นโฆษณาที่แสดงร่วมและ PIP ซึ่งไม่มีอยู่ใน tvOS)
เปลี่ยนชื่อโมดูล
เราได้เปลี่ยนชื่อโมดูลจาก InteractiveMediaAds
เป็น GoogleInteractiveMediaAds
เพื่อให้ตรงกับ iOS SDK แล้ว
การเปลี่ยนแปลง | |
---|---|
เก่า |
#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 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 นอกจากนี้ ความสัมพันธ์ระหว่างผู้จัดการสตรีมกับสตรีมก็มีการเปลี่ยนแปลงด้วยเช่นกัน ใน SDK v3 จะใช้ตัวจัดการสตรีมเพียงตัวเดียวเพื่อจัดการสตรีมหลายรายการได้ ในเวอร์ชัน 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 ไปใช้
เพื่อให้สอดคล้องกับ iOS SDK ปัจจุบัน tvOS SDK จึงมีการมอบสิทธิ์จัดการสตรีมเพียง 1 รายการ ซึ่งก็คือ IMAStreamManagerDelegate
สำหรับจัดการเหตุการณ์สตรีม ตอนนี้คุณต้องใช้คำสั่ง Switch ภายในผู้รับมอบสิทธิ์นั้นเพื่อจัดการเหตุการณ์ที่ต้องการ
การเปลี่ยนแปลง | |
---|---|
เก่า |
- (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; } } |