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

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

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

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

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

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

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

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

แคสต์ไม่ได้

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

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

การอัปเดตแอป

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

    หากใช้ Swift Package Manager ให้อัปเดตแพ็กเกจ google-cast-ios-sdk เป็นเวอร์ชัน 4.8.6

    หรือ ดึง SDK ด้วยตนเอง

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

    ระบุ NSBonjourServices ใน Info.plist เพื่อ อนุญาตให้การค้นหาเครือข่าย LAN สำเร็จ

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

ในการเปิดแอปครั้งต่อๆ ไป 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 เวอร์ชันใหม่

  • อัปเดต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) จะปรากฏขึ้นหลังจากที่แอปสแกนเป็นครั้งแรก ซึ่งอาจส่งผลให้กล่องโต้ตอบสิทธิ์ปรากฏในตำแหน่งแบบสุ่ม ในแอป

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