后台定位用于应用进入后台后继续接收位置更新。该能力涉及敏感权限、系统后台策略和额外耗电,只应在用户明确知情且业务确有需要时启用。
Android 通过前台服务通知维持后台定位。最终应用需按目标系统版本配置前台定位、后台定位和前台服务权限,并确保定位服务、通知渠道以及必要的通知权限可用。系统会向用户展示持续通知。
最终应用需启用 UIBackgroundModes 的 location,并配置与业务场景匹配的定位用途说明和始终定位授权。开启后台能力后,应显式启动连续定位,不要假定系统会自动恢复定位任务。
最终 HAP 需配置前台定位权限、ohos.permission.LOCATION_IN_BACKGROUND、ohos.permission.KEEP_BACKGROUND_RUNNING 和网络权限,并声明 location 类型的后台运行模式。
enableLocInBackground() 只开启平台后台定位能力,不会代替 requestLocationUpdates() 启动连续定位。建议先完成权限和客户端配置,再开启后台能力并显式开始连续定位。
async function startBackgroundLocation(): Promise<void> {if (locationClient == null) {return}try {const enabled = await locationClient!.enableLocInBackground()if (enabled) {locationClient!.requestLocationUpdates()}} catch (error) {console.error('开启后台定位失败', error)}}
function stopBackgroundLocation(): void {locationClient?.stopRequestLocationUpdates()locationClient?.disableLocInBackground()}
可通过 isStartLocInBackground() 查询后台能力状态。业务结束时应停止连续定位、关闭后台定位并调用 destroy()。合理设置定位间隔和结束条件,避免长期无效运行。
上一篇
下一篇