สิทธิ์และการค้นพบบน iOS

ตั้งแต่ iOS 14 เป็นต้นไป ระบบปฏิบัติการจะบังคับใช้ข้อจำกัดและสิทธิ์ใหม่ที่ส่งผลต่อประสบการณ์ของผู้ใช้ Cast ซึ่งจะส่งผลต่อวิธีสร้าง Cast SDK ในแอปด้วย เพื่อให้แอปรักษาฟังก์ชันการแคสต์ด้วย iOS เวอร์ชันล่าสุด คุณต้องอัปเดตเพื่อจัดการกับการเปลี่ยนแปลงสิทธิ์เหล่านี้

iOS 14

นักพัฒนาซอฟต์แวร์ควรอัปเดตแอปของผู้ส่ง iOS Cast เป็น Google Cast SDK เวอร์ชัน 4.6.0 ขึ้นไป เวอร์ชันเหล่านี้รองรับ iOS 14 และข้อกําหนด

เริ่มตั้งแต่ iOS 14 เป็นต้นไป แอปพลิเคชันที่สแกนหาอุปกรณ์ในเครือข่ายภายในจะแสดงข้อความแจ้งผู้ใช้ด้วยกล่องโต้ตอบสิทธิ์แบบครั้งเดียวเพื่อค้นหาและเชื่อมต่อกับอุปกรณ์เครือข่ายในพื้นที่ แพลตฟอร์ม Cast จะใช้เครือข่ายเฉพาะที่ในการค้นหาและควบคุมอุปกรณ์แคสต์ ดังนั้นหากผู้ใช้ปฏิเสธสิทธิ์ ก็จะไม่สามารถแคสต์ได้

เพื่อปรับปรุงประสบการณ์ของผู้ใช้ เราจึงทำการแก้ไข UX บางอย่างใน SDK สำหรับแอปที่ใช้เครื่องมือเลือกอุปกรณ์มาตรฐาน การแก้ไข UX เหล่านี้ทำให้ผู้ใช้เข้าใจได้ชัดเจนยิ่งขึ้นว่าทำไมจึงต้องมีสิทธิ์เข้าถึงเครือข่าย LAN รวมถึงวิธีเปิดใช้การแคสต์ในกรณีที่การเข้าถึงอุปกรณ์เครือข่าย 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 ค้นหาอุปกรณ์แคสต์ในเครือข่ายได้ ตอนนี้ปุ่ม "แคสต์" ควรจะแสดงขึ้นมาเสมอ หากไม่มีอุปกรณ์พร้อมใช้งานเมื่อผู้ใช้แตะปุ่ม "แคสต์" กล่องโต้ตอบจะปรากฏขึ้นเพื่อให้คำแนะนำถึงสาเหตุที่อุปกรณ์ไม่พร้อมใช้งาน รวมถึงข้อมูลเกี่ยวกับวิธีเปิดใช้สิทธิ์การเข้าถึงเครือข่ายภายในอีกครั้ง

การเปลี่ยนแปลงของ Cast SDK

การแคสต์ครั้งแรก

ครั้งแรกที่ผู้ใช้พยายามแคสต์ กล่องโต้ตอบการเข้าถึงเครือข่ายภายใน (LNA) จะปรากฏขึ้นเพื่ออธิบายเหตุผลที่ต้องเข้าถึงเครือข่ายภายใน ตามด้วยข้อความแจ้งสิทธิ์การเข้าถึงเครือข่ายภายในของ iOS ที่ Apple จัดหาให้ ตัวอย่างด้านล่างนี้จะแสดงโฟลว์:

ขั้นตอนสิทธิ์การเข้าถึงเครือข่าย LAN

แคสต์ไม่พร้อมใช้งาน

ใน iOS Sender SDK 4.6.0 ปุ่ม "แคสต์" จะปรากฏขึ้นเสมอเมื่อผู้ใช้ เชื่อมต่อกับ Wi-Fi เมื่ออุปกรณ์แคสต์ไม่พร้อมใช้งาน การแตะปุ่ม "แคสต์" จะแสดงกล่องโต้ตอบที่ให้คำแนะนำแก่ผู้ใช้เกี่ยวกับสาเหตุที่เป็นไปได้ที่ทำให้แคสต์ไม่พร้อมใช้งาน ดังที่แสดงในการจำลองด้านล่าง

Flow with Cast ไม่พร้อมใช้งาน

การอัปเดตแอปใน iOS 14

  1. เพิ่ม Cast iOS SDK 4.8.0 ลงในโปรเจ็กต์

    หากใช้ CocoaPods ให้ใช้ pod update เพื่อเพิ่ม SDK 4.8.0 ลงในโปรเจ็กต์

    หรือ ดึง SDK ด้วยตนเอง

  2. เพิ่ม NSBonjourServices ลงใน Info.plist

    ระบุ NSBonjourServices ใน Info.plist เพื่อให้การค้นหาเครือข่ายภายในประสบความสำเร็จใน iOS 14

    คุณจะต้องเพิ่มทั้ง _googlecast._tcp และ _<your-app-id>._googlecast._tcp เป็นบริการเพื่อให้การค้นหาอุปกรณ์ทำงานได้อย่างถูกต้อง

    appID คือ ReceiverID ซึ่งเป็นรหัสเดียวกับที่กำหนดไว้ใน GCKDiscoveryCriteria

    อัปเดตคำจำกัดความของ NSBonjourServices ตัวอย่างต่อไปนี้และแทนที่ "ABCD1234" ด้วย appID

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. เพิ่ม NSLocalNetworkUsageDescription ลงใน Info.plist

    เราขอแนะนำอย่างยิ่งให้คุณปรับแต่งข้อความที่แสดงในข้อความแจ้งของเครือข่ายภายในโดยเพิ่มสตริงสิทธิ์เฉพาะแอปในไฟล์ Info.plist ของแอปสำหรับ NSLocalNetworkUsageDescription เช่น เพื่ออธิบายการค้นหาการแคสต์และบริการค้นพบอื่นๆ อย่างเช่น DIAL

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} ใช้เครือข่ายภายในเพื่อค้นหาอุปกรณ์ที่พร้อมใช้งาน Cast ในเครือข่าย
    Wi-Fi</string>

    ข้อความนี้จะปรากฏขึ้นเป็นส่วนหนึ่งของกล่องโต้ตอบการเข้าถึงเครือข่ายภายในของ iOS ดังที่แสดงในการจำลอง

    รูปภาพกล่องโต้ตอบสิทธิ์การเข้าถึงเครือข่าย LAN ของ Cast
  4. เปิดตัวแอปไปยัง Apple App Store อีกครั้ง

    เราขอแนะนำให้คุณเผยแพร่แอปอีกครั้งโดยใช้เวอร์ชัน 4.8.0 โดยเร็วที่สุดด้วย

การปรับแต่ง

การเริ่มต้นการค้นหาอุปกรณ์แคสต์

โดยค่าเริ่มต้น การค้นพบอุปกรณ์แคสต์จะเริ่มต้นเมื่อผู้ใช้แตะปุ่ม "แคสต์" (GCKUICastButton) เป็นครั้งแรก หากผู้ใช้พยายามใช้แอป Cast ในเครือข่ายภายในหลังจากอัปเกรดเป็น 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 คุณควรเผยแพร่แอปด้วยแคสต์ 4.6.0

หากฉันเปิดตัวแอปอีกครั้งด้วย Cast SDK เวอร์ชันใหม่ ผู้ใช้ของฉันจะใช้อะไรใน iOS 13 หรือเวอร์ชันก่อนหน้า

ผู้ใช้จะยังคงได้รับประสบการณ์การใช้งานแบบเดิมก่อน การเผยแพร่แอปอีกครั้ง การเปลี่ยนแปลงที่ผู้ใช้เห็นจะจำกัดไว้สำหรับผู้ใช้ที่ใช้ iOS 14 เท่านั้น

ฉันจะต้องทำอย่างไรเพื่ออัปเดตแอปเมื่อ Cast SDK เวอร์ชันใหม่เปิดตัว

  • อัปเดต Info.plist ของแอปให้มีคำอธิบายการใช้งานเครือข่าย LAN
  • เพิ่ม NSBonjourServices ลงใน Info.plist ของแอป และระบุชื่อบริการ Bonjour สำหรับ แคสต์และรหัสแอปของคุณ
  • อัปเกรดแอปของผู้ส่งเพื่อใช้ Cast SDK 4.6.0
  • เผยแพร่แอปไปยัง Apple App Store อีกครั้ง

ทำไมอุปกรณ์จึงไม่ปรากฏขึ้นในเครื่องมือเลือกอุปกรณ์ที่กำหนดเองหลังจากที่ฉันอัปเกรดเป็น 4.6.0

ปัญหานี้เป็นที่ทราบกันดีอยู่แล้วว่าอาจเกิดขึ้นหากคุณใช้เครื่องมือเลือกอุปกรณ์ที่กําหนดเองแทนเครื่องมือเลือกอุปกรณ์มาตรฐาน ใน Cast SDK เวอร์ชัน 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 เพิ่มเติมให้ใช้งานแบบ ไม่จำเป็นต้องมีสิทธิ์เข้าถึง Bluetooth® ซึ่งใช้ได้ทั้งในเว็บไซต์ของนักพัฒนาซอฟต์แวร์และบน CocoaPods ใหม่ของ google-cast-sdk-no-bluetooth

รายละเอียดแอป

รายละเอียดที่ขึ้นอยู่กับเวอร์ชันของ iOS SDK ที่คุณกำลังใช้

แอปที่สร้างด้วย iOS 12 SDK หรือเวอร์ชันก่อนหน้า

  • การดำเนินการที่แนะนำ ประสิทธิภาพในการค้นหาอุปกรณ์อาจลดลงเมื่อทำงานบน iOS 13 แต่จะยังคงใช้งานได้ เราขอแนะนำให้นักพัฒนาซอฟต์แวร์อัปเกรดเป็น Cast SDK v4.4.4 เมื่อพร้อมใช้งาน
  • iOS 13 จะแจ้งให้ผู้ใช้ให้สิทธิ์ Bluetooth® แก่แอป

แอปที่สร้างด้วย iOS 13 SDK

  • ขอให้ดำเนินการ: อัปเดตเป็น Cast SDK 4.4.4 หรือปุ่ม "แคสต์" อาจไม่ปรากฏหากผู้ใช้ไม่ได้ให้สิทธิ์เข้าถึงตำแหน่ง การอัปเกรดไปใช้ Cast SDK 4.4.4 เป็นสิ่งสำคัญเพื่อให้มั่นใจว่าจะได้รับประสบการณ์การแคสต์ที่เชื่อถือได้บน iOS 13