ขอตำแหน่งในเบื้องหลัง

หน้านี้จะกล่าวถึงหัวข้อต่อไปนี้

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

เนื้อหาของกล่องโต้ตอบสิทธิ์จะขึ้นอยู่กับเวอร์ชัน SDK เป้าหมาย

เมื่อฟีเจอร์ในแอปขอตำแหน่งในเบื้องหลังบนอุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) กล่องโต้ตอบสิทธิ์ของระบบจะมีตัวเลือกชื่ออนุญาตตลอดเวลา หากผู้ใช้เลือกตัวเลือกนี้ ฟีเจอร์ในแอปของคุณจะได้รับสิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง

อย่างไรก็ตาม ใน Android 11 (API ระดับ 30) ขึ้นไป กล่องโต้ตอบของระบบจะไม่มีตัวเลือกอนุญาตทุกครั้ง แต่ผู้ใช้ต้องเปิดใช้ตำแหน่งในเบื้องหลังในหน้าการตั้งค่าแทน ดังที่แสดงในรูปที่ 7

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

แอปกำหนดเป้าหมายเป็น Android 11 ขึ้นไป

หากแอปไม่ได้รับสิทธิ์ ACCESS_BACKGROUND_LOCATION และ shouldShowRequestPermissionRationale() แสดงผลเป็น true ให้แสดง UI ที่ให้ความรู้แก่ผู้ใช้ ซึ่งประกอบด้วยข้อมูลต่อไปนี้

  • คําอธิบายที่ชัดเจนว่าเหตุใดฟีเจอร์ของแอปจึงจําเป็นต้องเข้าถึงตําแหน่งในเบื้องหลัง
  • ป้ายกำกับที่ผู้ใช้มองเห็นของตัวเลือกการตั้งค่าที่ให้สิทธิ์เข้าถึงตําแหน่งในเบื้องหลัง (เช่น อนุญาตตลอดในรูปที่ 7) คุณสามารถโทรไปที่ getBackgroundPermissionOptionLabel() เพื่อขอป้ายกำกับนี้ ค่าที่แสดงผลของเมธอดนี้จะแปลเป็นภาษาที่กําหนดค่าไว้สำหรับภาษาของอุปกรณ์ของผู้ใช้
  • ตัวเลือกให้ผู้ใช้ปฏิเสธสิทธิ์ หากผู้ใช้ปฏิเสธการเข้าถึงตำแหน่งในเบื้องหลัง ผู้ใช้จะยังใช้แอปของคุณต่อไปได้
ผู้ใช้สามารถแตะการแจ้งเตือนของระบบเพื่อเปลี่ยนการตั้งค่าตำแหน่งสำหรับแอป
รูปที่ 8 การแจ้งเตือนที่เตือนให้ผู้ใช้ทราบว่าได้ให้สิทธิ์เข้าถึงตำแหน่งในเบื้องหลังแก่แอปแล้ว

แอปกำหนดเป้าหมายเป็น Android 10 หรือต่ำกว่า

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

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

ผู้ใช้ส่งผลต่อความแม่นยำของตำแหน่งในเบื้องหลังได้

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

แหล่งข้อมูลเพิ่มเติม

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

Codelabs

วิดีโอ

ตัวอย่าง