如请求位置权限和隐私最佳实践页面所述,应用应仅请求对其用户界面功能至关重要的位置权限类型,并向用户正确披露此信息。大多数用例仅在用户使用应用时才需要位置。如果您的应用需要后台位置(例如,在实施地理围栏时),请确保这对于应用的核心功能至关重要,为用户提供明确的好处,并且以用户能够明显感知的方式进行。
注意:Google Play 商店已更新其关于设备位置的政策,限制需要后台位置才能实现其核心功能并满足相关政策要求的应用的后台位置访问权限。采用这些最佳实践不能保证 Google Play 批准您的应用在后台使用位置。
了解更多关于与设备位置相关的政策变更。
后台位置访问清单
使用以下清单来识别后台潜在的位置访问逻辑
在您的应用清单中,检查
ACCESS_COARSE_LOCATION
权限和ACCESS_FINE_LOCATION
权限。验证您的应用是否需要这些位置权限。- 如果您的应用面向 Android 10(API 级别 29)或更高版本,还要检查
ACCESS_BACKGROUND_LOCATION
权限。验证您的应用是否有需要此权限的功能。
- 如果您的应用面向 Android 10(API 级别 29)或更高版本,还要检查
查找位置访问 API 的使用情况,例如融合位置提供程序 API、地理围栏 API或LocationManager API,在您的代码中,例如在以下结构中
- 后台服务
JobIntentService
对象WorkManager
或JobScheduler
任务AlarmManager
操作- 从应用部件调用的挂起意图
如果您的应用使用访问位置的 SDK 或库,则此访问权限将归属于您的应用。要确定 SDK 或库是否需要位置访问权限,请查阅库的文档。
评估后台位置访问权限
如果您发现您的应用在后台访问位置,请考虑采取以下操作
- 评估后台位置访问权限对于应用的核心功能是否至关重要。
如果您不需要在后台访问位置,请将其删除。
如果您的应用面向 Android 10(API 级别 29)或更高版本,请从应用的清单中删除
ACCESS_BACKGROUND_LOCATION
权限。删除此权限后,在运行 Android 10 的设备上,应用将无法始终访问位置。确保用户知道您的应用正在后台访问位置。对于用户不明显的案例,这一点尤其重要。
如果可能,重构您的位置访问逻辑,以便仅在应用的活动对用户可见时请求位置。
对后台位置的有限更新
如果后台位置访问对于您的应用至关重要,请记住,Android 通过对运行 Android 8.0(API 级别 26)和更高版本的设备设置后台位置限制来节省设备电池电量。在这些版本的 Android 上,如果您的应用在后台运行,它每小时只能接收几次位置更新。了解更多关于后台位置限制。
其他资源
要了解更多关于后台位置用法的相关信息,请查看以下资料
视频
示例
示例演示了在应用处于后台时访问位置的最佳实践。