ตามที่อธิบายไว้ในหน้าขอสิทธิ์เข้าถึงตำแหน่งและแนวทางปฏิบัติแนะนำด้านความเป็นส่วนตัว แอปควรขอสิทธิ์เข้าถึงตำแหน่งประเภทที่สำคัญต่อฟีเจอร์ที่แสดงต่อผู้ใช้เท่านั้น และเปิดเผยข้อมูลนี้แก่ผู้ใช้อย่างเหมาะสม กรณีการใช้งานส่วนใหญ่ต้องการตำแหน่งเมื่อผู้ใช้มีส่วนร่วมกับแอปเท่านั้น หากแอปของคุณต้องการตำแหน่งในเบื้องหลัง เช่น เมื่อใช้การกำหนดเขตพื้นที่เสมือน โปรดตรวจสอบว่าตำแหน่งนั้นสำคัญต่อฟังก์ชันหลักของแอป มอบสิทธิประโยชน์ที่ชัดเจนแก่ผู้ใช้ และดำเนินการในลักษณะที่ผู้ใช้เห็นได้ชัดเจน
รายการตรวจสอบการเข้าถึงตำแหน่งในเบื้องหลัง
ใช้รายการตรวจสอบต่อไปนี้เพื่อระบุตรรกะการเข้าถึงตำแหน่งที่เป็นไปได้ในเบื้องหลัง
ในไฟล์ Manifest ของแอป ให้ตรวจสอบสิทธิ์
ACCESS_COARSE_LOCATIONและสิทธิ์ACCESS_FINE_LOCATIONยืนยันว่าแอปของคุณต้องใช้สิทธิ์เข้าถึงตำแหน่งเหล่านี้- หากแอปกำหนดเป้าหมายเป็น Android 10 (API ระดับ 29) ขึ้นไป ให้ตรวจสอบสิทธิ์
ACCESS_BACKGROUND_LOCATIONด้วย ยืนยันว่าแอปของคุณมีฟีเจอร์ที่ต้องใช้สิทธิ์ดังกล่าว
- หากแอปกำหนดเป้าหมายเป็น Android 10 (API ระดับ 29) ขึ้นไป ให้ตรวจสอบสิทธิ์
มองหาการใช้ API การเข้าถึงตำแหน่ง เช่น ผู้ให้บริการ Fused Location API, Geofencing API หรือ
LocationManagerAPI ภายในโค้ด เช่น ในโครงสร้างต่อไปนี้- บริการที่ทำงานอยู่เบื้องหลัง
- งาน
WorkManagerหรือJobSchedulerรายการ - การดำเนินการ
AlarmManagerรายการ - Intent รอดำเนินการที่เรียกใช้จากวิดเจ็ตแอป
หากแอปใช้ SDK หรือไลบรารีที่เข้าถึงตำแหน่ง การเข้าถึงนี้จะถือว่ามาจากแอปของคุณ หากต้องการพิจารณาว่า SDK หรือไลบรารีจำเป็นต้องเข้าถึงตำแหน่งหรือไม่ โปรดดูเอกสารประกอบของไลบรารี
ประเมินการเข้าถึงตำแหน่งในเบื้องหลัง
หากพบว่าแอปเข้าถึงตำแหน่งในเบื้องหลัง ให้พิจารณาดำเนินการต่อไปนี้
- ประเมินว่าสิทธิ์เข้าถึงตำแหน่งในเบื้องหลังมีความสำคัญต่อฟังก์ชันหลักของแอปหรือไม่
หากไม่จำเป็นต้องเข้าถึงตำแหน่งในเบื้องหลัง ให้นำสิทธิ์ดังกล่าวออก
หากแอปกำหนดเป้าหมายเป็น Android 10 (ระดับ API 29) ขึ้นไป ให้นำสิทธิ์
ACCESS_BACKGROUND_LOCATIONออกจากไฟล์ Manifest ของแอป เมื่อนำสิทธิ์นี้ออก แอปในอุปกรณ์ที่ใช้ Android 10 จะไม่มีตัวเลือกการเข้าถึงตำแหน่งตลอดเวลาตรวจสอบว่าผู้ใช้ทราบว่าแอปของคุณกำลังเข้าถึงตำแหน่งในเบื้องหลัง ซึ่งสำคัญอย่างยิ่งสำหรับกรณีที่ผู้ใช้ไม่เห็นอย่างชัดเจน
หากเป็นไปได้ ให้เปลี่ยนโครงสร้างภายในโค้ดของตรรกะการเข้าถึงตำแหน่งเพื่อให้คุณขอสิทธิ์เข้าถึงตำแหน่งเฉพาะเมื่อผู้ใช้เห็นกิจกรรมของแอปเท่านั้น
การอัปเดตตำแหน่งในเบื้องหลังแบบจำกัด
หากการเข้าถึงตำแหน่งในเบื้องหลังเป็นสิ่งจำเป็นสำหรับแอป โปรดทราบว่า Android จะรักษาอายุการใช้งานแบตเตอรี่ของอุปกรณ์โดยการตั้งค่าขีดจำกัดตำแหน่งในเบื้องหลังในอุปกรณ์ที่ใช้ Android 8.0 (ระดับ API 26) ขึ้นไป ใน Android เวอร์ชันเหล่านี้ หากแอปทำงานในเบื้องหลัง แอปจะรับการอัปเดตตำแหน่งได้เพียงไม่กี่ครั้งต่อชั่วโมง ดูข้อมูลเพิ่มเติมได้ที่ขีดจำกัดของตำแหน่งในเบื้องหลัง
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ตำแหน่งในเบื้องหลังได้จากแหล่งข้อมูลต่อไปนี้
วิดีโอ
วิธีค้นหาการใช้งานตำแหน่งในเบื้องหลังที่เป็นไปได้
ตัวอย่าง
ตัวอย่างตำแหน่งในเบื้องหลังแสดงแนวทางปฏิบัติแนะนำสำหรับการเข้าถึงตำแหน่งเมื่อแอปทำงานอยู่เบื้องหลัง