如请求位置权限和隐私权最佳实践页面所述,应用应仅请求对面向用户的功能至关重要的位置权限类型,并向用户明确披露。大多数用例仅在用户使用应用时才需要位置信息。如果您的应用需要后台位置信息(例如在实现地理围栏时),请确保这对于应用的核心功能至关重要,能为用户带来明确的益处,并且是以用户显而易见的方式完成的。
注意:Google Play 商店已更新其设备位置政策,将后台位置访问限制为因其核心功能而需要该权限并符合相关政策要求的应用。采用这些最佳实践并不能保证 Google Play 批准您的应用在后台使用位置信息。
详细了解与设备位置相关的政策变更。
后台位置访问核对清单
使用以下核对清单来识别后台中可能存在的位置访问逻辑
在您的应用清单中,检查
ACCESS_COARSE_LOCATION
权限和ACCESS_FINE_LOCATION
权限。验证您的应用是否需要这些位置权限。- 如果您的应用面向 Android 10(API 级别 29)或更高版本,还要检查
ACCESS_BACKGROUND_LOCATION
权限。验证您的应用是否具有需要此权限的功能。
- 如果您的应用面向 Android 10(API 级别 29)或更高版本,还要检查
在您的代码中查找位置访问 API 的使用情况,例如 Fused Location Provider API、Geofencing API 或 LocationManager API,例如在以下构造中:
- 后台服务
JobIntentService
对象WorkManager
或JobScheduler
任务AlarmManager
操作- 从应用微件调用的待处理 intent
如果您的应用使用访问位置信息的 SDK 或库,则此访问权限归因于您的应用。要确定 SDK 或库是否需要位置访问权限,请查阅该库的文档。
评估后台位置访问
如果您发现您的应用在后台访问位置信息,请考虑采取以下措施
- 评估后台位置访问是否对应用的核心功能至关重要。
如果您不需要后台位置访问,请将其移除。
如果您的应用面向 Android 10(API 级别 29)或更高版本,请从您的应用清单中移除
ACCESS_BACKGROUND_LOCATION
权限。当您移除此权限时,在运行 Android 10 的设备上,应用无法选择“始终”访问位置信息。确保用户知道您的应用正在后台访问位置信息。这对于用户不明显的场景尤其重要。
如果可能,请重构您的位置访问逻辑,以便仅在应用活动对用户可见时才请求位置信息。
后台位置信息的有限更新
如果后台位置访问对您的应用至关重要,请记住 Android 通过对运行 Android 8.0(API 级别 26)及更高版本的设备设置后台位置限制来延长设备电池续航时间。在这些 Android 版本上,如果您的应用在后台运行,它每小时只能接收几次位置更新。详细了解后台位置限制。
其他资源
要了解更多关于后台位置使用的信息,请查看以下资料
视频
示例
示例,演示应用在后台时访问位置信息的最佳实践。