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

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

iOS 14

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

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

เราจะปรับเปลี่ยน 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

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

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

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

แคสต์ไม่ได้

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

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

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

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

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

    หรือ ดึง 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>

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

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

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

การปรับแต่ง

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

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

หากตั้งค่าเป็น true การค้นหาอุปกรณ์ Cast จะเริ่มเมื่อผู้ใช้แตะ 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ของแอปให้มีคำอธิบายการใช้งานเครือข่าย LAN
  • เพิ่ม 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 เพื่อเริ่มการค้นหาอุปกรณ์

สาเหตุของการเปลี่ยนแปลงนี้คือพรอมต์สิทธิ์การเข้าถึงเครือข่าย LAN (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 จะแจ้งให้ผู้ใช้ให้สิทธิ์บลูทูธ® แก่แอป

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

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