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