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

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

การขอสิทธิ์ใน Wear OS คล้ายกับการขอสิทธิ์ในแอปบนอุปกรณ์เคลื่อนที่ โดยมี Use Case เพิ่มเติมอีก 2 รายการ เอกสารนี้ถือว่าคุณเข้าใจวิธีการทำงานของสิทธิ์ 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 ผู้ใช้เปลี่ยนสิทธิ์ได้โดยใช้แอปการตั้งค่า