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

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

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

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

สถานการณ์สิทธิ์

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

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

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

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

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

หากต้องการดูสถานการณ์เหล่านี้ทั้งหมดในแอปที่ใช้งานได้ ให้ดูตัวอย่าง ExcersizeSampleCompose ใน 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 ผู้ใช้เปลี่ยนสิทธิ์ได้โดยใช้แอปการตั้งค่า