ขั้นตอนต่อไปนี้จะช่วยให้คุณแปลงแอปผู้ส่ง iOS จาก Cast SDK ได้ v2 ไปยังผู้ส่ง CAF ซึ่งอิงตามข้อมูล GCKCastContext Singleton
บทนำ
- ผู้ส่ง CAF ยังคงกระจายอยู่ใน เว็บไซต์นักพัฒนาซอฟต์แวร์ Google Cast และ CocoaPods เช่น v2
- มีการเพิ่มชั้นเรียนใหม่ที่มีหน้าที่ในการปฏิบัติตามข้อกำหนด รายการตรวจสอบการออกแบบ Google Cast
- ผู้ส่ง CAF มีวิดเจ็ตที่เป็นไปตามข้อกำหนด Cast UX v2 ไม่ได้ให้คอมโพเนนต์ UI ใดๆ เลย และจำเป็นต้องให้คุณ วิดเจ็ตเหล่านี้
- การออกแบบ CAF Sender สอดคล้องกับการออกแบบ Cast Android SDK
- ผู้ส่ง CAF รองรับบิตโค้ด เช่น v2
- คำบรรยายแทนเสียงใน CAF คล้ายกับ v2
การอ้างอิง
ผู้ส่ง CAF รองรับ iOS เวอร์ชัน 8 ขึ้นไป
การเริ่มต้น
ใน CAF คุณต้องทำขั้นตอนเริ่มต้นอย่างชัดเจนสำหรับเฟรมเวิร์กของ Cast ช่วงเวลานี้
เกี่ยวข้องกับการเริ่มต้น
GCKCastContext
Singleton โดยใช้
GCKCastOptions
เพื่อระบุรหัสแอปพลิเคชัน Web Receiver และรหัสแอปพลิเคชันส่วนกลางอื่นๆ
ตัวเลือก โดยทั่วไปการดำเนินการนี้จะทำในAppDelegate
เมธอด -[application:didFinishLaunchingWithOptions:]
:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
ไม่จำเป็นต้องทำขั้นตอนนี้ในเวอร์ชัน 2
การค้นหาอุปกรณ์
ใน CAF ขั้นตอนการค้นหาจะเริ่มต้นและหยุดโดยอัตโนมัติโดย
เมื่อแอปทำงานเบื้องหน้า และไปที่เบื้องหลัง
ตามลำดับ ชั้นเรียน GCKDeviceScanner
และ GCKFilterCriteria
จาก v2 คือ
เลิกใช้งานแล้วและไม่ควรนำมาใช้
ปุ่ม "แคสต์" และกล่องโต้ตอบ "แคสต์"
ใน CAF เฟรมเวิร์กจะมีปุ่ม "แคสต์" และกล่องโต้ตอบ ทีมนักแสดง สามารถสร้างอินสแตนซ์และเพิ่มลงในแถบนำทางได้ดังนี้
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
นอกจากนี้ คุณยังเพิ่มปุ่ม "แคสต์" ลงในสตอรีบอร์ดได้ด้วย
เมื่อมีคนแตะปุ่ม กล่องโต้ตอบ "แคสต์" จะปรากฏขึ้นโดยอัตโนมัติ
ควบคุมอุปกรณ์
ใน CAF การควบคุมอุปกรณ์ส่วนใหญ่จะจัดการโดยเฟรมเวิร์ก ผู้ส่ง
ไม่จำเป็นต้องจัดการการเชื่อมต่อกับอุปกรณ์และการเปิดใช้งาน
แอปพลิเคชันเว็บรีซีฟเวอร์ คลาส v2
GCKDeviceManager
เลิกใช้งานแล้วและควร
ไม่มีการใช้ การโต้ตอบระหว่างผู้ส่งและตัวรับเว็บแสดงเป็น
"เซสชัน" CAF
GCKSessionManager
จัดการวงจรเซสชันและ
เริ่มต้นและหยุดเซสชันโดยอัตโนมัติตามท่าทางสัมผัสของผู้ใช้: เซสชัน
เริ่มต้นเมื่อผู้ใช้เลือกอุปกรณ์แคสต์ในกล่องโต้ตอบการแคสต์และสิ้นสุด
เมื่อผู้ใช้แตะปุ่ม "หยุดแคสต์" ในกล่องโต้ตอบ "แคสต์" หรือเมื่อ
แอปของผู้ส่งสิ้นสุดเอง แอปพลิเคชันของผู้ส่งรับการแจ้งเตือนเกี่ยวกับเซสชันได้
ในวงจรโดยการลงทะเบียน
GCKSessionManagerListener
พร้อมด้วย
GCKSessionManager
GCKSessionManagerListener
โปรโตคอลจะกำหนดเมธอด Callback สำหรับเหตุการณ์ในวงจรทั้งหมดของเซสชัน
GCKCastSession
คลาสแสดงถึงเซสชันที่มีอุปกรณ์แคสต์ ชั้นเรียน
มีวิธีในการควบคุมระดับเสียงของอุปกรณ์และสถานะปิดเสียง
เคยทำใน v2 โดยใช้เมธอดใน
GCKDeviceManager
ในเวอร์ชัน 2 พารามิเตอร์
GCKDeviceManagerDelegate
การแจ้งเตือนการเปลี่ยนแปลงจากโปรโตคอล
สถานะอุปกรณ์ รวมถึงระดับเสียง สถานะปิดเสียง สถานะสแตนด์บาย และอื่นๆ
ใน CAF การแจ้งเตือนการเปลี่ยนแปลงระดับเสียง/ปิดเสียงจะส่งผ่าน Callback
ใน
GCKSessionManagerListener
โปรโตคอล ผู้ฟังเหล่านี้จะลงทะเบียนกับ
GCKSessionManager
การแจ้งเตือนสถานะอุปกรณ์ที่เหลือทั้งหมด
ส่งผ่าน
GCKCastDeviceStatusListener
โปรโตคอล ผู้ฟังเหล่านี้จะลงทะเบียนกับ
GCKCastSession
ตรรกะการเชื่อมต่ออีกครั้ง
เช่นเดียวกับเวอร์ชัน 2 CAF จะพยายามเริ่มต้นการเชื่อมต่อเครือข่ายที่ สูญหายไปเนื่องจากการสูญเสียสัญญาณ Wi-Fi ชั่วคราว หรือข้อผิดพลาดอื่นๆ ของเครือข่าย ขณะนี้คือ ทำที่ระดับเซสชัน เซสชันสามารถป้อนคำว่า "ถูกระงับ" ระบุเมื่อ การเชื่อมต่อถูกตัดและจะเปลี่ยนกลับเป็น "เชื่อมต่อแล้ว" ระบุเมื่อ กลับมาเชื่อมต่ออีกครั้ง โดยเฟรมเวิร์กจะช่วยเชื่อมต่อกับอินเทอร์เน็ต แอปพลิเคชันตัวรับเว็บและการเชื่อมต่อช่องการแคสต์อีกครั้ง ซึ่งเป็นส่วนหนึ่งของกระบวนการนี้
นอกจากนี้ CAF ยังเพิ่มการเริ่มเซสชันอีกครั้งโดยอัตโนมัติอีกด้วย หากผู้ส่ง
ถูกส่งไปยังพื้นหลังหรือถูกยกเลิก (ด้วยการกวาดออกไป หรือ
เพราะเหตุขัดข้อง) ขณะที่เซสชันการแคสต์
กำลังดำเนินอยู่ เฟรมเวิร์กนี้จะ
พยายามดำเนินเซสชันนั้นต่อเมื่อแอปพลิเคชันผู้ส่งกลับไปที่
เบื้องหน้าหรือเปิดอีกครั้ง ซึ่งจะถูกจัดการโดยอัตโนมัติโดย
GCKSessionManager
ซึ่งจะออก Callback ที่ถูกต้องสำหรับ
GCKSessionManagerListener
อินสแตนซ์
การลงทะเบียนแชแนลที่กำหนดเอง
ในเวอร์ชัน 2 แชแนลที่กำหนดเอง (ใช้งานโดยใช้
GCKCastChannel
คลาสย่อยหรือ
GCKGenericChannel
และตัวแทน) ได้ลงทะเบียนกับ
GCKDeviceManager
ใน CAF แชแนลที่กำหนดเองจะลงทะเบียนกับ
GCKCastSession
อินสแตนซ์ การลงทะเบียนสามารถทำได้ใน
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
Callback Method สำหรับแอปพลิเคชันสื่อ คุณไม่จำเป็นต้อง
ลงทะเบียน
GCKMediaControlChannel
;
ดูรายละเอียดเพิ่มเติมได้ในส่วนต่อไปนี้
ส่วนควบคุมสื่อ
คลาส v2
GCKMediaControlChannel
เลิกใช้งานแล้วและไม่ควรนำมาใช้ ใน CAF มันจะถูกแทนที่โดย
GCKRemoteMediaClient
ซึ่งมีฟังก์ชันการทำงานที่เทียบเท่ากันใน API ที่สะดวกกว่า
ไม่จำเป็นต้องเริ่มต้นหรือลงทะเบียนออบเจ็กต์นี้อย่างชัดแจ้ง เวลา
จะสร้างอินสแตนซ์ของออบเจ็กต์โดยอัตโนมัติและลงทะเบียน
ช่องทางสื่อ ณ เวลาเริ่มต้นเซสชัน หากแอปพลิเคชันตัวรับเว็บกำลังเชื่อมต่ออยู่
ให้รองรับเนมสเปซสื่อ
GCKRemoteMediaClient
สามารถเข้าถึงได้ด้วย
-[remoteMediaClient]
ของ
GCKCastSession
ออบเจ็กต์
ในเวอร์ชัน 2 คำขอสื่อทั้งหมดที่ออกใน
GCKMediaControlChannel
จะแสดงรหัสคำขอที่เป็นตัวเลข และวิธีการ
GCKMediaControlChannelDelegate
จะระบุรหัสนี้เมื่อส่งการแจ้งเตือนเกี่ยวกับการดำเนินการตามคำขอให้เสร็จสมบูรณ์ หรือ
ล้มเหลว
ใน CAF คำขอสื่อทั้งหมดที่ออกในวันที่
GCKRemoteMediaClient
จะแสดงผล
GCKRequest
object; ออบเจ็กต์นี้มีการเชื่อมโยง
GCKRequestDelegate
โปรโตคอล
ซึ่งสามารถใช้ติดตามความคืบหน้าและผลลัพธ์สุดท้ายของคำขอ
เวอร์ชัน 2
GCKMediaControlChannel
;
จะส่งการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะของมีเดียเพลเยอร์บนตัวรับเว็บ
ผ่านทาง
GCKMediaControlChannelDelegate
ใน CAF
GCKRemoteMediaClient
ให้ Callback ที่เทียบเท่ากันผ่าน
GCKRemoteMediaClientListener
ผู้ฟังทุกคนสามารถลงทะเบียนกับ
GCKRemoteMediaClient
ซึ่งช่วยให้คอมโพเนนต์ของผู้ส่งหลายรายแชร์
อินสแตนซ์เดียวของ GCKRemoteMediaClient
ที่เชื่อมโยงกับเซสชัน
ในเวอร์ชัน 2 แอปพลิเคชันของผู้ส่งต้องรับภาระในการรักษาผู้ใช้
ซิงค์ข้อมูลกับสถานะของมีเดียเพลเยอร์บนตัวรับเว็บ ใน CAF คลาส
GCKUIMediaController
เข้ามารับหน้าที่รับผิดชอบนี้เป็นส่วนใหญ่ โปรดดู
บทแนะนำ Codelab
เพื่อดูตัวอย่างเกี่ยวกับวิธีใช้คอมโพเนนต์นี้
การวางซ้อนบทนำ
V2 ไม่มี UI การซ้อนทับช่วงแนะนำ
CAF เพิ่มคลาส
GCKCastContext
ด้วยวิธีการ
-[presentCastInstructionsViewControllerOnce]
ที่แอปผู้ส่งสามารถใช้เพื่อไฮไลต์ปุ่ม "แคสต์" เมื่อแสดงครั้งแรก
ให้แก่ผู้ใช้
มินิคอนโทรลเลอร์
ในเวอร์ชัน 2 คุณต้องใช้ตัวควบคุมขนาดเล็กตั้งแต่เริ่มต้นใน Sender App
ใน CAF เฟรมเวิร์กนี้จะมีแถบควบคุม
GCKUIMiniMediaControlsViewController
ซึ่งคุณสามารถเพิ่มลงในฉากที่ต้องการแสดง
การเพิ่มตัวควบคุมขนาดเล็กลงในแอปผู้ส่งทำได้ 2 วิธีดังนี้
ให้เฟรมเวิร์ก Cast จัดการเลย์เอาต์ของตัวควบคุมขนาดเล็กได้โดยการรวม ตัวควบคุมมุมมองที่มีอยู่
GCKUICastContainerViewController
และเพิ่มGCKUIMiniMediaControlsViewController
ที่ด้านล่างของมุมมองเพิ่มตัวควบคุมขนาดเล็กลงในตัวควบคุมมุมมองที่มีอยู่โดยตรงโดยใช้
-[createMiniMediaControlsViewController]
เพื่อสร้างGCKUIMiniMediaControlsViewController
แล้วเพิ่มลงในตัวควบคุมมุมมองคอนเทนเนอร์เป็นมุมมองย่อย
ตัวควบคุมที่ขยาย
ในเวอร์ชัน 2 คุณต้องใช้ตัวควบคุมแบบขยายตั้งแต่ต้น แอปผู้ส่ง
การเพิ่ม CAF
GCKUIMediaController
ซึ่งคุณสามารถใช้เพื่อให้ใช้งานตัวควบคุมแบบขยายได้ง่ายขึ้น
CAF เพิ่มวิดเจ็ตตัวควบคุมแบบขยายที่สร้างไว้ล่วงหน้า
GCKUIExpandedMediaControlsViewController
ซึ่งคุณเพิ่มลงในแอปได้ง่ายๆ คุณไม่จำเป็นต้องใช้ส่วนขยายที่กำหนดเองอีกต่อไป
ตัวควบคุมที่ใช้ GCKUIMediaController
การบันทึกการแก้ไขข้อบกพร่อง
GCKLogger
และ
GCKLoggerDelegate
คลาสจาก v2 จะส่งต่อไปยัง CAF โดยมีการเปลี่ยนแปลงและการปรับปรุงบางอย่าง
GCKLoggerDelegate
เมธอด -[logFromFunction:message:]
มี
เลิกใช้งานแล้วเพื่อให้
-[logMessage:fromFunction:]
ในตอนนี้ คุณสามารถกรองข้อความบันทึกเฟรมเวิร์กได้โดยการสร้าง
GCKLoggerFilter
อินสแตนซ์และกำหนดโดยการตั้งค่า
พร็อพเพอร์ตี้ -[filter]
ของ
GCKLogger
ซิงเกิล
แอปตัวอย่าง
เราขอแนะนำให้ดูที่ codelabs และ ตัวอย่างแอปที่เขียนสำหรับ CAF