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

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

iOS 14

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

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

เรากำลังทำการปรับเปลี่ยน UX บางอย่างใน SDK สำหรับแอปที่ใช้ตัวเลือกอุปกรณ์มาตรฐานเพื่อปรับปรุงประสบการณ์ของผู้ใช้ การปรับเปลี่ยน UX เหล่านี้จะช่วยให้ผู้ใช้เข้าใจได้ชัดเจนขึ้นว่าทำไมจึงต้องมีสิทธิ์เข้าถึงเครือข่าย LAN รวมถึงวิธีเปิดใช้การแคสต์หากปิดใช้การเข้าถึงอุปกรณ์ในเครือข่าย LAN

แอปที่สร้างด้วย Cast SDK เวอร์ชัน 4.4.8 ลงไปจะยังคงทำงานได้ตราบใดที่สร้างด้วย Xcode 11.7 ลงไป หากคุณสร้างแอปสำหรับ iOS 14 ด้วย Xcode 12 ขึ้นไป เราขอแนะนำให้อัปเดตเป็น Cast SDK เวอร์ชัน 4.6.0 ขึ้นไปเพื่อให้แอป Cast ทำงานได้อย่างถูกต้องต่อไป

คุณสามารถดาวน์โหลด Cast iOS SDK เวอร์ชัน 4.6.0 ขึ้นไปด้วย CocoaPods โดยทำตาม การตั้งค่า CocoaPods หรือด้วยตนเองโดย ทำตามการตั้งค่าด้วยตนเอง การเผยแพร่เวอร์ชันนี้มีการเปลี่ยนแปลงกลไกการค้นหาพื้นฐานเพื่อให้แอปที่สร้างด้วย Xcode 12 ค้นหาอุปกรณ์ Cast ในเครือข่ายได้ ปุ่มแคสต์ควรแสดงอยู่เสมอ หากไม่มีอุปกรณ์พร้อมใช้งานเมื่อผู้ใช้แตะปุ่ม Cast กล่องโต้ตอบจะปรากฏขึ้นพร้อมคำแนะนำเกี่ยวกับเหตุผลที่อุปกรณ์อาจไม่พร้อมใช้งาน รวมถึงข้อมูลเกี่ยวกับวิธีเปิดใช้สิทธิ์เข้าถึงเครือข่าย LAN อีกครั้ง

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

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

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

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

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

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

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

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

  1. เพิ่ม Cast iOS SDK เวอร์ชัน 4.8.6 ลงในโปรเจ็กต์

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

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

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

    ระบุ NSBonjourServices ใน Info.plist เพื่อ ให้การค้นหาเครือข่าย LAN สำเร็จใน 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

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

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

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

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

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

การปรับแต่ง

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

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

มีแฟล็กใหม่ให้คุณควบคุมเวลาที่การค้นหาอุปกรณ์เริ่มต้นและลักษณะการทำงานขององค์ประกอบบางอย่างใน UX ดังนี้

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

ค่าเริ่มต้นคือ true แฟล็กนี้ใช้ได้เฉพาะเมื่อตั้งค่าแฟล็ก GCKCastOptions::disableDiscoveryAutostart เป็น false

หากตั้งค่าเป็น true การค้นหาอุปกรณ์แคสต์จะเริ่มขึ้นเมื่อผู้ใช้แตะ GCKUICastButton เป็นครั้งแรก ระบบจะแสดงข้อความข้อมูลให้ผู้ใช้ทราบเหตุผลที่ต้องมีสิทธิ์เข้าถึงเครือข่าย LAN หลังจากข้อความนั้น ข้อความ LNA ของ iOS 14 จะปรากฏขึ้น การค้นหาอุปกรณ์แคสต์จะเริ่มขึ้นหลังจากที่ผู้ใช้รับทราบข้อความ

GCKUICastButton จะแสดงขึ้นเสมอในการเปิดแอปครั้งต่อๆ ไป

หากตั้งค่าเป็น false การค้นหาอุปกรณ์จะเริ่มขึ้นตามค่าของ แฟล็ก GCKCastOptions::disableDiscoveryAutostart

คำถามที่พบบ่อย

จะเกิดอะไรขึ้นหากฉันเผยแพร่แอปผู้ส่ง Cast อีกครั้งด้วย Cast SDK เวอร์ชัน 4.4.8 และ Xcode 12

แอปของคุณอาจค้นหาอุปกรณ์ Cast ในเครือข่าย LAN ไม่ได้ เว้นแต่คุณจะได้รับสิทธิ์มัลติแคสต์เครือข่ายจาก Apple โปรดทราบว่า Apple จะไม่ให้สิทธิ์มัลติแคสต์เพื่อวัตถุประสงค์ในการรองรับ Cast เพียงอย่างเดียว หากคุณวางแผนที่จะสร้างแอปด้วย Xcode 12 คุณควรเผยแพร่แอป ด้วย Cast เวอร์ชัน 4.6.0

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

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

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

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

ทำไมอุปกรณ์จึงหยุดแสดงในตัวเลือกอุปกรณ์ที่กำหนดเอง หลังจากที่ฉันอัปเกรดเป็นเวอร์ชัน 4.6.0

ปัญหานี้เป็นปัญหาที่ทราบอยู่แล้วซึ่งอาจเกิดขึ้นหากคุณใช้ตัวเลือกอุปกรณ์ที่กำหนดเอง แทนตัวเลือกอุปกรณ์มาตรฐาน ใน Cast SDK เวอร์ชัน 4.4.8 ลงไป การสแกนอุปกรณ์จะเป็นไปโดยอัตโนมัติ ตั้งแต่เวอร์ชัน 4.6.0 เป็นต้นไป คุณจะต้องเรียกใช้เมธอด startDiscovery ในคลาส GCKDiscoveryManager อย่างชัดเจนเพื่อเริ่มการค้นหาอุปกรณ์

เหตุผลของการเปลี่ยนแปลงนี้คือข้อความแจ้งสิทธิ์เข้าถึงเครือข่าย LAN (LNA) จะปรากฏขึ้นหลังจากที่แอปสแกนเป็นครั้งแรก ซึ่งอาจทำให้กล่องโต้ตอบสิทธิ์ปรากฏขึ้นแบบสุ่มในแอป

นักพัฒนาแอปที่สร้างตัวเลือกอุปกรณ์ที่กำหนดเองสำหรับแอปจะต้องแสดงกล่องโต้ตอบคั่นระหว่างหน้าแบบครั้งเดียวก่อนที่จะเริ่มการสแกนอุปกรณ์เป็นครั้งแรกใน iOS 14

iOS 13

iOS 13 ได้มีการนำข้อกำหนดด้านสิทธิ์ใหม่ๆ มาใช้ ซึ่งส่งผลต่อแอปที่ใช้ Google Cast SDK

ตั้งแต่ Google Cast SDK เวอร์ชัน 4.4.3 เป็นต้นไป จะมี SDK เพิ่มเติมที่ไม่ต้องใช้สิทธิ์ Bluetooth® ซึ่งมีให้ใช้งานทั้งในเว็บไซต์สำหรับนักพัฒนาแอปและใน Cocoapods ใหม่google-cast-sdk-no-bluetooth

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

รายละเอียดต่อไปนี้จะแตกต่างกันไปตามเวอร์ชันของ iOS SDK ที่คุณใช้อยู่ในปัจจุบัน

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

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

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

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