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

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

iOS 14

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

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

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

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

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

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

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

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

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

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

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

    หากใช้ CocoaPods ให้ใช้ pod update เพื่อเพิ่ม SDK 4.8.3 ลงในโปรเจ็กต์

    หรือ ดึงข้อมูล 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 เช่น เพื่ออธิบายการค้นพบ Cast และบริการการค้นพบอื่นๆ เช่น DIAL

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

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

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

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

การปรับแต่ง

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

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

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

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

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

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

GCKUICastButton จะแสดงทุกครั้งที่เปิดแอป

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

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

จะเกิดอะไรขึ้นหากฉันเผยแพร่แอปส่ง Cast อีกครั้งด้วย 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 ของแอปให้รวมคำอธิบายการใช้งานเครือข่ายภายใน
  • เพิ่ม NSBonjourServices ลงใน Info.plist ของแอป แล้วระบุชื่อบริการ Bonjour สำหรับ Cast และรหัสแอป
  • อัปเกรดแอปผู้ส่งเพื่อใช้ Cast SDK 4.6.0
  • เผยแพร่แอปของคุณอีกครั้งใน App Store ของ Apple

ทำไมอุปกรณ์จึงหยุดแสดงในเครื่องมือเลือกอุปกรณ์ที่กําหนดเองหลังจากฉันอัปเกรดเป็น 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® ซึ่งพร้อมใช้งานทั้งในเว็บไซต์ของนักพัฒนาแอปและใน google-cast-sdk-no-bluetooth Cocoapods เวอร์ชันใหม่

เลิกใช้งานแล้ว

รายละเอียดแอป

รายละเอียดต่อไปนี้ขึ้นอยู่กับเวอร์ชันของ iOS SDK ที่คุณใช้อยู่

แอปที่สร้างด้วย iOS 12 SDK หรือเวอร์ชันก่อนหน้า

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

แอปที่สร้างด้วย SDK ของ iOS 13

  • ขอให้ดำเนินการ: อัปเดตเป็น Cast SDK 4.4.4 ไม่เช่นนั้นปุ่มแคสต์อาจไม่ปรากฏหากผู้ใช้ไม่ให้สิทธิ์เข้าถึงตำแหน่ง คุณต้องอัปเกรดเป็น Cast SDK 4.4.4 เพื่อให้ได้รับประสบการณ์การแคสต์ที่เชื่อถือได้ใน iOS 13