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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

iOS 14

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

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

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

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

การเปลี่ยนแปลงการแคสต์ SDK

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

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

ขั้นตอนการเข้าถึงเครือข่าย LAN

แคสต์ไม่ได้

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

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

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

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

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

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

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

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

    คุณจะต้องเพิ่มทั้ง _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 เช่น เพื่ออธิบายการค้นพบแคสต์และบริการ Discovery อื่นๆ เช่น DIAL

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

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

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

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

การปรับแต่ง

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

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

เหตุใดอุปกรณ์จึงหยุดแสดงในเครื่องมือเลือกอุปกรณ์ที่กําหนดเองหลังจากที่ฉันอัปเกรดเป็น 4.6.0

ปัญหานี้เกิดขึ้นได้หากคุณใช้เครื่องมือเลือกอุปกรณ์ที่กําหนดเองแทนเครื่องมือเลือกอุปกรณ์มาตรฐาน ใน Cast เวอร์ชัน 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 เพิ่มเติมจะพร้อมใช้งานโดยไม่ต้องมีการรองรับโหมดผู้มาเยือนซึ่งไม่จําเป็นต้องใช้บลูทูธ กลุ่มเป้าหมายนี้พร้อมให้บริการทั้งในเว็บไซต์ของนักพัฒนาซอฟต์แวร์และใน Cocoapods เวอร์ชันใหม่ google-cast-sdk-no-bluetooth โปรดทราบว่าฟีเจอร์โหมดผู้มาเยือนคือความสามารถที่แอปของผู้ส่งจะตรวจจับอุปกรณ์แคสต์ได้ในบริเวณใกล้เคียงที่มีการเคลื่อนไหวร่างกายโดยไม่ต้องใช้เครือข่ายเดียวกัน โดยใช้ PIN ที่แสดงในอุปกรณ์ที่รองรับโหมดผู้มาเยือน

ในการเตรียมแอปให้พร้อมสําหรับ iOS 13 คุณจะต้องตัดสินใจดําเนินการต่อไปนี้

ต้องรองรับโหมดผู้มาเยือนต่อไป

  • ต้องเพิ่มคีย์ Privacy - Bluetooth Always Usage Description
  • เพิ่มสตริงเพื่ออธิบายการใช้งาน Bluetooth® ให้ผู้ใช้ทราบผ่าน Info.plist

ต้องนําการรองรับโหมดผู้มาเยือนออก

  • ป้องกันไม่ให้แอปต้องใช้ Cast Bluetooth®
  • ผสานรวม Google Cast SDK เวอร์ชันล่าสุดโดยไม่มีการรองรับ Bluetooth®
  • กลุ่มเป้าหมายนี้พร้อมให้บริการทั้งในเว็บไซต์ของนักพัฒนาซอฟต์แวร์และใน Cocoapods เวอร์ชันใหม่ google-cast-sdk-no-bluetooth

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

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

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

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

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

  • ขอให้ดําเนินการ: อัปเดตเป็น Cast SDK 4.4.4 หรือปุ่ม "แคสต์" อาจไม่ปรากฏขึ้นหากผู้ใช้ไม่ได้ให้สิทธิ์เข้าถึงตําแหน่ง การอัปเกรดเป็น Cast SDK 4.4.4 จําเป็นสําหรับประสบการณ์การแคสต์ที่เชื่อถือได้ใน iOS 13
  • โปรดไปที่เอกสารสําหรับนักพัฒนาซอฟต์แวร์เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีผสานรวมโหมดผู้มาเยือน หรือเลือกไม่ใช้โหมดผู้มาเยือน กับ Google Cast SDK และไม่รองรับ Bluetooth®