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

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

iOS 14

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

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

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

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

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

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

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

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

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

แคสต์ไม่ได้

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

Flow with 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

    เราขอแนะนำอย่างยิ่งให้คุณปรับแต่งข้อความที่แสดงในข้อความแจ้งเครือข่ายในพื้นที่โดยการเพิ่มสตริงสิทธิ์เฉพาะแอปในไฟล์ 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>

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

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

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

การปรับแต่ง

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

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

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

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

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

จะเกิดอะไรขึ้นหากฉันเผยแพร่แอปตัวส่ง Cast อีกครั้งด้วย Cast SDK v4.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ของแอปให้มีคำอธิบายการใช้งานเครือข่ายในพื้นที่
  • เพิ่ม NSBonjourServices ลงใน Info.plist ของแอป และระบุชื่อบริการ Bonjour สำหรับ Cast และรหัสแอป
  • อัปเกรดแอปผู้ส่งเพื่อใช้ 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® โดยมีให้บริการทั้งในเว็บไซต์ นักพัฒนาซอฟต์แวร์และใน google-cast-sdk-no-bluetooth Cocoapods ใหม่

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

รายละเอียดมีดังนี้ โดยขึ้นอยู่กับเวอร์ชันของ 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