ขอสิทธิ์ใน Wear OS

keywords: wear, permissions, collection_guideslandingwear image_path: images/training/wear/multiple_permissions.png

การขอสิทธิ์ใน Wear OS จะคล้ายกับการขอสิทธิ์ใน แอปบนอุปกรณ์เคลื่อนที่ โดยมี Use Case เพิ่มเติม 2-3 รายการ เอกสารนี้ถือว่าคุณเข้าใจวิธีการทำงานของสิทธิ์ใน Android หากไม่ทราบ โปรดดูวิธีสิทธิ์ ทำงานใน Android

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

สถานการณ์เกี่ยวกับสิทธิ์

คุณอาจพบสถานการณ์ต่างๆ เมื่อขอ สิทธิ์ที่เป็นอันตราย ใน Wear OS ดังนี้

  • แอป Wear จะขอสิทธิ์สำหรับแอปที่ทำงานบนอุปกรณ์ที่สวมใส่ได้

  • แอป Wear จะขอสิทธิ์สำหรับแอปที่ทำงานในโทรศัพท์

  • แอปโทรศัพท์จะขอสิทธิ์สำหรับแอปที่ทำงานบนอุปกรณ์ที่สวมใส่ได้

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

หากต้องการดูสถานการณ์ทั้งหมดนี้ในแอปที่ใช้งานได้ ให้ตรวจสอบตัวอย่าง ExerciseSampleCompose ใน GitHub

ส่วนต่อไปนี้จะอธิบายสถานการณ์แต่ละอย่าง ดูข้อมูลเพิ่มเติม เกี่ยวกับการขอสิทธิ์ได้ที่ส่วนรูปแบบการขอสิทธิ์

แอป Wear ขอสิทธิ์ของอุปกรณ์สวมใส่

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

อ่านหลักการเกี่ยวกับสิทธิ์ เพื่อให้มั่นใจว่าคุณได้มอบประสบการณ์ที่ดีที่สุดแก่ผู้ใช้ และอย่าลืม ตรวจสอบ shouldShowRequestPermissionRationale() และให้ข้อมูลเพิ่มเติม ตามที่จำเป็น

หากแอปหรือหน้าปัดต้องใช้สิทธิ์มากกว่า 1 รายการในครั้งเดียว คำขอสิทธิ์ จะปรากฏขึ้นทีละรายการ

หน้าจอขอสิทธิ์หลายหน้าจอที่แสดงต่อกัน
รูปที่ 1 หน้าจอการให้สิทธิ์ปรากฏขึ้นต่อเนื่องกัน

แอป Wear ขอสิทธิ์เข้าถึงโทรศัพท์

เมื่อแอป Wear ขอสิทธิ์เข้าถึงโทรศัพท์ เช่น แอปที่ใช้กับอุปกรณ์สวมใส่ต้องการ เข้าถึงรูปภาพหรือข้อมูลที่ละเอียดอ่อนอื่นๆ ในแอปเวอร์ชันมือถือ แอป Wear ต้องส่งผู้ใช้ไปยังโทรศัพท์เพื่อยอมรับสิทธิ์ โดยแอปโทรศัพท์จะให้ข้อมูลเพิ่มเติมแก่ผู้ใช้ได้โดยใช้กิจกรรม ในกิจกรรม ให้ใส่ปุ่ม 2 ปุ่ม ได้แก่ ปุ่มหนึ่งสำหรับให้สิทธิ์และอีกปุ่มหนึ่ง สำหรับปฏิเสธสิทธิ์

แอป Wear จะส่งผู้ใช้ไปยังโทรศัพท์เพื่อขอสิทธิ์
รูปที่ 2 ส่งผู้ใช้ไปยังโทรศัพท์เพื่อให้สิทธิ์

แอปโทรศัพท์ขอสิทธิ์เข้าถึงอุปกรณ์ที่สวมใส่ได้

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

แอปโทรศัพท์จะส่งผู้ใช้ไปยังอุปกรณ์ที่สวมใส่ได้เพื่อขอสิทธิ์
รูปที่ 3 ส่งผู้ใช้ไปยังอุปกรณ์ที่สวมใส่ได้เพื่อขอ สิทธิ์

แอปโทรศัพท์ขอสิทธิ์หลายรายการพร้อมกัน

รูปที่ 4 กล่องโต้ตอบสิทธิ์ที่ใช้โปรไฟล์อุปกรณ์คู่เพื่อ ขอสิทธิ์หลายรายการในคำขอเดียว

แอปพาร์ทเนอร์ใน Android 12 (API ระดับ 31) ขึ้นไปจะใช้โปรไฟล์อุปกรณ์ที่ใช้ร่วมกันได้เมื่อเชื่อมต่อกับนาฬิกา การใช้โปรไฟล์ช่วยให้กระบวนการลงทะเบียนง่ายขึ้นด้วยการรวมการให้ชุดสิทธิ์เฉพาะประเภทอุปกรณ์ ไว้ในขั้นตอนเดียว

ระบบจะให้สิทธิ์ที่รวมไว้แก่แอปที่ใช้ร่วมกันเมื่ออุปกรณ์เชื่อมต่อ และสิทธิ์จะคงอยู่ตราบเท่าที่อุปกรณ์เชื่อมโยงกัน การลบแอปหรือ การยกเลิกการเชื่อมโยงจะเป็นการนำสิทธิ์ออก ดูรายละเอียดได้ที่ AssociationRequest.Builder.setDeviceProfile()

รูปแบบคำขอสิทธิ์

การขอสิทธิ์จากผู้ใช้มีรูปแบบต่างๆ โดยจะเรียงตามลำดับความสำคัญ ดังนี้

  • ขอสิทธิ์ในบริบทเมื่อเห็นได้ชัดว่าจำเป็นสำหรับฟังก์ชันการทำงานที่เฉพาะเจาะจง แต่ไม่จำเป็นสำหรับแอปโดยรวมในการทำงาน

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

เราจะอธิบายรูปแบบเหล่านี้ในส่วนต่อไปนี้

ถามตามบริบท

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

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

แอปจะขอสิทธิ์เมื่อจำเป็นอย่างเห็นได้ชัด
รูปที่ 5 ขอสิทธิ์ในบริบท

ให้ความรู้ตามบริบท

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

ใช้วิธี shouldShowRequestPermissionRationale() เพื่อช่วยให้แอปตัดสินใจได้ว่าจะให้ข้อมูลเพิ่มเติมหรือไม่ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อขอสิทธิ์ของแอป หรือคุณจะดูวิธีที่แอปพลิเคชันตัวอย่างลำโพงใน GitHub จัดการการแสดง ข้อมูลก็ได้

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

จัดการการปฏิเสธ

หากผู้ใช้ปฏิเสธสิทธิ์ที่ขอซึ่งไม่ได้มีความสําคัญต่อกิจกรรมที่ต้องการ อย่าบล็อกไม่ให้ผู้ใช้ทํากิจกรรมต่อ หากสิทธิ์ที่ถูกปฏิเสธทำให้ส่วนใดส่วนหนึ่งของ กิจกรรมถูกปิดใช้ ให้แสดงความคิดเห็นที่มองเห็นได้และนำไปใช้ได้

รูปที่ 7 แสดงการใช้ไอคอนแม่กุญแจเพื่อระบุว่าฟีเจอร์ถูกล็อก เนื่องจากผู้ใช้ไม่ได้ให้สิทธิ์ในการใช้งาน

เมื่อผู้ใช้ปฏิเสธการให้สิทธิ์ ระบบจะแสดงไอคอนแม่กุญแจข้างฟีเจอร์ที่เกี่ยวข้อง
รูปที่ 7 ไอคอนแม่กุญแจแสดงว่าฟีเจอร์ถูกล็อกเนื่องจาก สิทธิ์ถูกปฏิเสธ

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

ระบบจะเสนอให้หยุดขอสิทธิ์
รูปที่ 8 ผู้ใช้สามารถเข้าถึงคำขอสิทธิ์ ที่ถูกปฏิเสธไปแล้ว 2 ครั้งผ่านการตั้งค่า

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีจัดการการปฏิเสธสิทธิ์

สิทธิ์สำหรับบริการ

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

โดยทั่วไปแล้ว อย่าขอสิทธิ์สำหรับหน้าปัด แต่ให้ใช้ภาวะแทรกซ้อนแทน และให้ผู้ใช้ เลือกข้อมูลที่จะแสดงผ่านภาวะแทรกซ้อน

การตั้งค่า

ผู้ใช้เปลี่ยนสิทธิ์ของแอป Wear ได้ทุกเมื่อในการตั้งค่า เมื่อผู้ใช้พยายามทำสิ่งที่ต้องใช้สิทธิ์ ให้เรียกใช้เมธอด checkSelfPermission() ก่อนเพื่อดูว่าแอปมีสิทธิ์ดำเนินการหรือไม่

ทำการตรวจสอบนี้แม้ว่าผู้ใช้จะเคยให้สิทธิ์ก่อนหน้านี้แล้วก็ตาม เนื่องจากผู้ใช้อาจเพิกถอนสิทธิ์ในภายหลัง

ผู้ใช้สามารถเปลี่ยนสิทธิ์ผ่านแอปการตั้งค่าได้
รูปที่ 9 ผู้ใช้เปลี่ยนสิทธิ์ได้โดยใช้แอปการตั้งค่า