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

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

iOS 14

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

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

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

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

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

ขั้นตอนการอนุญาตการเข้าถึงเครือข่ายภายใน

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

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

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

การอัปเดตแอปใน 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 คือ getrID ซึ่งเป็นรหัสเดียวกับที่กําหนดไว้ใน 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} ใช้เครือข่ายภายในเพื่อค้นหาอุปกรณ์ที่รองรับ Cast ในเครือข่าย Wi-Fi</string>

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

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

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

การปรับแต่ง

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

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

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

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

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

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

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

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

iOS 13

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

ตั้งแต่ Google Cast SDK v4.4.3 เป็นต้นไปจะมี SDK เพิ่มเติมให้ใช้งานแบบ ไม่จำเป็นต้องมีสิทธิ์เข้าถึงบลูทูธ ซึ่งมีให้บริการทั้งบนเว็บไซต์ของนักพัฒนาซอฟต์แวร์และใน 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