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

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

iOS 14

นักพัฒนาซอฟต์แวร์ควรอัปเดตแอปของผู้ส่ง iOS Cast เป็น Google Cast SDK v4.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

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

เริ่มตั้งแต่ SDK ผู้ส่งของ iOS 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} ใช้เครือข่าย LAN เพื่อสำรวจอุปกรณ์ที่พร้อมใช้งาน Cast ในเครือข่าย Wi-Fi</string>

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

    รูปภาพกล่องโต้ตอบสิทธิ์เข้าถึงเครือข่ายภายในของ 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 คุณควรเผยแพร่แอปด้วย 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 เพื่อเริ่มการค้นหาอุปกรณ์

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