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

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

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

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

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

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

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

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

แคสต์ไม่ได้

ตั้งแต่ iOS Sender SDK 4.6.0 เป็นต้นไป ปุ่มแคสต์จะปรากฏขึ้นเสมอเมื่อผู้ใช้เชื่อมต่อกับ 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 เพื่อให้การค้นหาเครือข่ายภายในสำเร็จ

    คุณจะต้องเพิ่มทั้ง _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

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

การปรับแต่ง

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

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

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

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

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

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

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

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