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

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

iOS 14

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

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

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

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

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

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

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

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

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

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

โฟลว์กับแคสต์ไม่พร้อมใช้งาน

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

  1. เพิ่ม Cast iOS SDK 4.8.1 ลงในโปรเจ็กต์ของคุณ

    หากใช้ CocoaPods ให้ใช้ pod update เพื่อเพิ่ม SDK 4.8.1 ในโปรเจ็กต์ของคุณ

    ไม่เช่นนั้น ให้ ดึง SDK ด้วยตนเอง

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

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

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

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

    อัปเดตคําจํากัดความ NSBonjourServices ตัวอย่างต่อไปนี้และแทนที่ "ABCD1234" ด้วยรหัสแอปของคุณ

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

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

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

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

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

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

การปรับแต่ง

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

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

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

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

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

  • อัปเดต Info.plist ของแอปให้มีคำอธิบายการใช้งาน เครือข่ายภายใน
  • เพิ่ม 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