如请求位置权限和隐私最佳实践页面所述,应用应仅请求对其面向用户的功能至关重要的位置权限类型,并向用户妥善披露此信息。大多数用例仅在用户使用应用时才需要位置。如果您的应用需要后台位置(例如,在实施地理围栏时),请确保它对应用的核心功能至关重要,为用户提供明确的好处,并且以用户显而易见的方式完成。
注意: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 上,如果您的应用在后台运行,它每小时只能接收几次位置更新。详细了解后台位置限制。
其他资源
要详细了解后台位置使用情况,请查看以下资料
视频
示例
示例演示了在应用处于后台时访问位置的最佳实践。