按照请求位置信息权限和隐私设置最佳实践页面中所述,应用应该只请求获得实现面向用户的功能所必需的位置信息权限,并以恰当的方式向用户披露请求的内容。大多数使用情形中,只有在用户与应用互动时才需要使用位置信息。如果您的应用需要在后台访问位置信息(例如在实现地理围栏时),请确保这种访问对使用应用的核心功能起到至关重要的作用,能为用户提供明确的好处,并且采用一种让用户清楚知道的方式完成。
注意: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 8.0(API 级别 26)及更高版本的设备上,Android 系统为了延长设备电池的续航时间,采用了“后台位置信息限制”的设置。在这些版本的 Android 系统中,如果您的应用在后台运行,它每小时只能接收几次位置信息更新。详细了解后台位置信息限制。
其他资源
如需详细了解关于后台位置信息的使用,请查看以下资料:
视频
示例
此示例演示了应用在后台运行时访问位置信息的最佳实践。