ตั้งแต่ iOS 14 เป็นต้นไป ระบบปฏิบัติการจะบังคับใช้ข้อจํากัดและสิทธิ์ใหม่ที่ส่งผลกระทบต่อประสบการณ์ของผู้ใช้แคสต์ การดําเนินการนี้จะส่งผลต่อวิธีการสร้าง SDK การแคสต์ลงในแอปด้วย หากต้องการให้แอปคงฟังก์ชันการแคสต์ด้วย iOS เวอร์ชันล่าสุด คุณต้องอัปเดตเพื่อจัดการการเปลี่ยนแปลงสิทธิ์เหล่านี้
iOS 14
นักพัฒนาแอปควรอัปเดตแอปผู้ส่ง Cast ของ iOS เป็น Google Cast SDK v4.6.0 ขึ้นไป เวอร์ชันเหล่านี้รองรับ iOS 14 และข้อกําหนดของรุ่น
ตั้งแต่ iOS 14 เป็นต้นไป แอปพลิเคชันที่สแกนหาอุปกรณ์ในเครือข่ายภายในจะแสดงข้อความแจ้งผู้ใช้ด้วยกล่องโต้ตอบการให้สิทธิ์แบบครั้งเดียวเพื่อค้นหาและเชื่อมต่อกับอุปกรณ์ในเครือข่ายท้องถิ่น แพลตฟอร์มแคสต์ใช้เครือข่ายในเครื่องเพื่อค้นหาและควบคุมอุปกรณ์ Cast ดังนั้นหากผู้ใช้ปฏิเสธสิทธิ์ ผู้ใช้ก็จะแคสต์ไม่ได้
เพื่อปรับปรุงประสบการณ์ของผู้ใช้ เราจะทําการเปลี่ยนแปลง UX ใน SDK ให้กับแอปที่ใช้เครื่องมือเลือกอุปกรณ์มาตรฐาน การแก้ไข UX เหล่านี้ทําให้ผู้ใช้เข้าใจได้ชัดเจนขึ้นว่าทําไมต้องมีสิทธิ์เข้าถึงเครือข่าย LAN รวมถึงวิธีเปิดใช้การแคสต์หากปิดใช้การเข้าถึงอุปกรณ์ในเครือข่ายภายใน
แอปที่สร้างด้วย Cast SDK เวอร์ชันที่ใช้ v4.4.8 หรือเวอร์ชันก่อนหน้าจะยังใช้ต่อไปได้ตราบใดที่สร้างด้วย Xcode 11.7 หรือเวอร์ชันก่อนหน้า หากคุณกําลังสร้างมาเพื่อ iOS 14 ที่ใช้ Xcode 12 ขึ้นไป เราขอแนะนําให้อัปเดตเป็น Cast SDK เวอร์ชัน 4.6.0 ขึ้นไปเพื่อให้มั่นใจว่าแอป Cast จะยังคงทํางานได้อย่างถูกต้อง
ดาวน์โหลด Cast iOS SDK v4.6.0 ขึ้นไปได้โดยใช้ CocoaPods โดยปฏิบัติตามการตั้งค่า CocoaPods หรือปฏิบัติตามการตั้งค่าด้วยตนเอง รุ่นนี้ประกอบด้วยการเปลี่ยนแปลงกลไกการค้นหาที่เกี่ยวข้องเพื่ออนุญาตให้แอปที่สร้างด้วย Xcode 12 สามารถค้นหาอุปกรณ์แคสต์ในเครือข่ายได้ ตอนนี้ปุ่ม "แคสต์" จะแสดงแล้ว หากไม่มีอุปกรณ์พร้อมใช้งานเมื่อผู้ใช้แตะปุ่ม "แคสต์" กล่องโต้ตอบจะแสดงคําแนะนําเกี่ยวกับเหตุผลที่อุปกรณ์อาจไม่พร้อมใช้งาน รวมถึงข้อมูลเกี่ยวกับวิธีเปิดใช้สิทธิ์เข้าถึงเครือข่ายภายในเครือข่ายอีกครั้ง
การเปลี่ยนแปลงการแคสต์ SDK
การแคสต์ครั้งแรก
ครั้งแรกที่ผู้ใช้พยายามแคสต์ กล่องโต้ตอบคั่นระหว่างหน้าในการเข้าถึงเครือข่ายในพื้นที่ (LNA) จะปรากฏขึ้นเพื่ออธิบายถึงเหตุผลที่จําเป็นต้องมีการเข้าถึงเครือข่าย LAN ตามด้วยสิทธิ์การเข้าถึงเครือข่าย iOS ในพื้นที่ของ Apple การจําลองด้านล่างแสดงขั้นตอนการดําเนินการดังนี้
แคสต์ไม่ได้
ตั้งแต่ SDK ผู้ส่งสําหรับ iOS 4.6.0 เป็นต้นไป ปุ่ม "แคสต์" จะปรากฏขึ้นเสมอเมื่อผู้ใช้เชื่อมต่อ Wi-Fi เมื่ออุปกรณ์แคสต์ไม่พร้อมใช้งาน การแตะปุ่ม "แคสต์" จะแสดงกล่องโต้ตอบที่บอกผู้ใช้เกี่ยวกับสาเหตุที่การแคสต์ไม่พร้อมใช้งาน ดังที่แสดงในการจําลองด้านล่าง
การอัปเดตแอปใน iOS 14
-
เพิ่ม Cast iOS SDK 4.7.0 ในโปรเจ็กต์
หากใช้ CocoaPods ให้ใช้
pod update
เพื่อเพิ่ม SDK 4.7.0 ในโปรเจ็กต์หรือ ดึง SDK ด้วยตนเอง
-
เพิ่ม
NSBonjourServices
ในInfo.plist
ระบุ
NSBonjourServices
ในInfo.plist
ของคุณเพื่อให้การค้นพบเครือข่ายในพื้นที่ใน iOS 14 ประสบความสําเร็จคุณจะต้องเพิ่มทั้ง
_googlecast._tcp
และ_<your-app-id>._googlecast._tcp
เป็นบริการเพื่อให้อุปกรณ์ค้นหาทํางานได้อย่างถูกต้องappID คือ ReceiverID ซึ่งเป็นรหัสเดียวกันกับที่กําหนดไว้ใน
GCKDiscoveryCriteria
อัปเดตคําจํากัดความของ
NSBonjourServices
ตัวอย่างต่อไปนี้และแทนที่ "ABCD1234" ด้วย appID -
เพิ่ม
NSLocalNetworkUsageDescription
ในInfo.plist
ขอแนะนําอย่างยิ่งให้คุณปรับแต่งข้อความที่แสดงในข้อความแจ้งในเครือข่ายท้องถิ่นด้วยการเพิ่มสตริงสิทธิ์เฉพาะแอปในไฟล์
Info.plist
ของแอปสําหรับNSLocalNetworkUsageDescription
เช่น เพื่ออธิบายการค้นพบแคสต์และบริการ Discovery อื่นๆ เช่น DIALข้อความนี้จะปรากฏเป็นส่วนหนึ่งของกล่องโต้ตอบการเข้าถึงเครือข่าย iOS ในพื้นที่ดังที่แสดงในการจําลอง
-
เผยแพร่แอปไปยัง Apple App Store อีกครั้ง
เราขอแนะนําให้เผยแพร่แอปอีกครั้งโดยใช้ 4.7.0 โดยเร็วที่สุด
การปรับแต่ง
การเริ่มค้นพบอุปกรณ์แคสต์
โดยค่าเริ่มต้น การค้นพบอุปกรณ์แคสต์จะเริ่มขึ้นในครั้งแรกที่แตะปุ่ม "แคสต์" (GCKUICastButton
) หากนี่เป็นครั้งแรกที่ผู้ใช้พยายามใช้แอป Cast ในเครือข่าย LAN หลังจากอัปเกรดเป็น iOS
14 โฆษณาคั่นระหว่างหน้า LNA ใหม่จะปรากฏขึ้น แล้วตามด้วยกล่องโต้ตอบสิทธิ์การเข้าถึงเครือข่าย iOS ในพื้นที่
แฟล็กใหม่ช่วยให้คุณควบคุมเวลาเริ่มค้นพบอุปกรณ์และลักษณะการทํางานขององค์ประกอบบางอย่างของ UX ได้
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
ค่าเริ่มต้นคือ true
แฟล็กนี้จะมีผลก็ต่อเมื่อมีการตั้งค่าแฟล็ก
GCKCastOptions::disableDiscoveryAutostart
เป็น false
หากตั้งค่าเป็น true
การค้นพบอุปกรณ์แคสต์จะเริ่มต้นเมื่อผู้ใช้แตะ GCKUICastButton
เป็นครั้งแรก ระบบจะแสดงข้อความแจ้งผู้ใช้เพื่อบอกผู้ใช้ว่าทําไมต้องให้สิทธิ์เครือข่ายภายใน หลังจากนั้นข้อความ iOS 14 LNA จะแสดงขึ้น
การค้นพบอุปกรณ์แคสต์จะเริ่มหลังจากที่รับทราบข้อความแล้ว
ในการเปิดตัวแอปครั้งต่อๆ ไป GCKUICastButton
จะแสดงเสมอ
หากตั้งค่าเป็น false
การค้นหาอุปกรณ์จะเริ่มต้นตามค่าของแฟล็ก
GCKCastOptions::disableDiscoveryAutostart
คำถามที่พบบ่อย
จะเกิดอะไรขึ้นหากฉันเผยแพร่แอปผู้ส่งแคสต์อีกครั้งด้วย Cast SDK v4.4.8 และ Xcode 12
แอปอาจไม่พบอุปกรณ์แคสต์ในเครือข่ายภายใน เว้นแต่คุณจะได้รับการให้สิทธิ์แบบมัลติแคสต์จากเครือข่ายจาก Apple โปรดทราบว่า Apple จะไม่ให้สิทธิ์มัลติแคสต์เพียงเพื่อจุดประสงค์ในการสนับสนุน Cast เท่านั้น หากคุณวางแผนที่จะสร้างด้วย Xcode 12 คุณควรเผยแพร่แอปด้วย Cast 4.6.0
หากฉันเผยแพร่แอปอีกครั้งด้วย Cast SDK ใหม่ ผู้ใช้ของฉันจะใช้ประสบการณ์ใดบน iOS 13 หรือเวอร์ชันก่อนหน้า
ผู้ใช้จะยังคงเห็นประสบการณ์ของผู้ใช้เช่นเดิมก่อนที่จะเปิดตัวแอปอีกครั้ง การเปลี่ยนแปลงที่ผู้ใช้มองเห็นจะจํากัดให้เฉพาะผู้ใช้ที่ใช้ iOS 14 เท่านั้น
สิ่งที่ต้องทําเพื่ออัปเดตแอปเมื่อมีการเปิดตัว Cast SDK เวอร์ชันใหม่แล้ว
- อัปเดต
Info.plist
ของแอปให้รวมคําอธิบายการใช้งานเครือข่ายในเครื่อง - เพิ่ม
NSBonjourServices
ลงในInfo.plist
ของแอป แล้วระบุชื่อบริการ Bonjour สําหรับ Cast และรหัสแอป - อัปเกรดแอปผู้ส่งเพื่อใช้ Cast SDK 4.6.0
- เผยแพร่แอปของคุณไปยัง Apple App Store อีกครั้ง
เหตุใดอุปกรณ์จึงหยุดแสดงในเครื่องมือเลือกอุปกรณ์ที่กําหนดเองหลังจากที่ฉันอัปเกรดเป็น 4.6.0
ปัญหานี้เกิดขึ้นได้หากคุณใช้เครื่องมือเลือกอุปกรณ์ที่กําหนดเองแทนเครื่องมือเลือกอุปกรณ์มาตรฐาน ใน Cast เวอร์ชัน 4.4.8
และเวอร์ชันก่อนหน้า การสแกนอุปกรณ์จะเป็นแบบอัตโนมัติ ตั้งแต่เวอร์ชัน 4.6.0 เป็นต้นไป คุณจะต้องเรียกใช้เมธอด startDiscovery
อย่างชัดแจ้งในคลาส GCKDiscoveryManager
เพื่อเริ่มการค้นพบอุปกรณ์
เหตุผลของการเปลี่ยนแปลงนี้เนื่องจากข้อความแจ้งการเข้าถึงเครือข่ายในพื้นที่ (LNA) จะปรากฏขึ้นหลังจากที่แอปสแกนเป็นครั้งแรก ซึ่งอาจส่งผลให้กล่องโต้ตอบสิทธิ์ปรากฏในที่ต่างๆ แบบสุ่มในแอป
นักพัฒนาแอปที่สร้างเครื่องมือเลือกอุปกรณ์สําหรับแอปของตนจะต้องแสดงโฆษณาคั่นระหว่างหน้าแบบครั้งเดียวก่อนที่จะเริ่มสแกนอุปกรณ์เป็นครั้งแรกใน iOS 14
iOS 13
iOS 13 เปิดตัวข้อกําหนดใหม่เกี่ยวกับสิทธิ์ซึ่งส่งผลต่อแอปที่ใช้ Google Cast SDK
ตั้งแต่ Google Cast SDK v4.4.3 เป็นต้นไป SDK เพิ่มเติมจะพร้อมใช้งานโดยไม่ต้องมีการรองรับโหมดผู้มาเยือนซึ่งไม่จําเป็นต้องใช้บลูทูธ กลุ่มเป้าหมายนี้พร้อมให้บริการทั้งในเว็บไซต์ของนักพัฒนาซอฟต์แวร์และใน Cocoapods เวอร์ชันใหม่ google-cast-sdk-no-bluetooth
โปรดทราบว่าฟีเจอร์โหมดผู้มาเยือนคือความสามารถที่แอปของผู้ส่งจะตรวจจับอุปกรณ์แคสต์ได้ในบริเวณใกล้เคียงที่มีการเคลื่อนไหวร่างกายโดยไม่ต้องใช้เครือข่ายเดียวกัน โดยใช้ PIN ที่แสดงในอุปกรณ์ที่รองรับโหมดผู้มาเยือน
ในการเตรียมแอปให้พร้อมสําหรับ iOS 13 คุณจะต้องตัดสินใจดําเนินการต่อไปนี้
ต้องรองรับโหมดผู้มาเยือนต่อไป
- ต้องเพิ่มคีย์
Privacy - Bluetooth Always Usage Description
- เพิ่มสตริงเพื่ออธิบายการใช้งาน Bluetooth® ให้ผู้ใช้ทราบผ่าน
Info.plist
ต้องนําการรองรับโหมดผู้มาเยือนออก
- ป้องกันไม่ให้แอปต้องใช้ Cast Bluetooth®
- ผสานรวม Google Cast SDK เวอร์ชันล่าสุดโดยไม่มีการรองรับ Bluetooth®
- กลุ่มเป้าหมายนี้พร้อมให้บริการทั้งในเว็บไซต์ของนักพัฒนาซอฟต์แวร์และใน Cocoapods เวอร์ชันใหม่
google-cast-sdk-no-bluetooth
รายละเอียดแอป
นี่คือรายละเอียดที่ขึ้นอยู่กับเวอร์ชันของ iOS SDK ที่คุณใช้
แอปที่สร้างด้วย iOS 12 SDK หรือเวอร์ชันก่อนหน้า
- การดําเนินการที่แนะนํา ประสิทธิภาพการค้นพบอุปกรณ์อาจลดลง เมื่อทํางานใน iOS 13 แต่จะยังคงใช้งานได้ เราขอแนะนําให้นักพัฒนาแอปอัปเกรดเป็น Cast SDK v4.4.4 หากมี
- iOS 13 จะแจ้งผู้ใช้ให้ให้สิทธิ์แก่บลูทูธ® แก่แอป
แอปที่สร้างด้วย iOS 13 SDK
- ขอให้ดําเนินการ: อัปเดตเป็น Cast SDK 4.4.4 หรือปุ่ม "แคสต์" อาจไม่ปรากฏขึ้นหากผู้ใช้ไม่ได้ให้สิทธิ์เข้าถึงตําแหน่ง การอัปเกรดเป็น Cast SDK 4.4.4 จําเป็นสําหรับประสบการณ์การแคสต์ที่เชื่อถือได้ใน iOS 13
- โปรดไปที่เอกสารสําหรับนักพัฒนาซอฟต์แวร์เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีผสานรวมโหมดผู้มาเยือน หรือเลือกไม่ใช้โหมดผู้มาเยือน กับ Google Cast SDK และไม่รองรับ Bluetooth®