You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native如何在Android、iOS平台获取应用后台或被杀状态的用户位置

后台及进程被杀死状态下司机位置追踪解决方案

安卓端必要配置调整

  • 补全Manifest权限:安卓12及以上版本需要额外添加ACCESS_BACKGROUND_LOCATION、FOREGROUND_SERVICE_LOCATION、POST_NOTIFICATIONS三个核心权限,这是系统要求的后台定位强制条件
  • 开启前台服务:你的现有配置缺失startForeground: true参数,安卓必须依托前台常驻通知才能保活定位进程,可将通知内容调整为用户可理解的业务相关说明,避免被系统判定为无效通知查杀
  • 修复Token失效问题:你当前通过useSelector从redux内存中读取Token,应用被杀死后内存数据清空,上报请求会因为携带无效Token失败。需要将用户Token持久化存储到AsyncStorage/MMKV这类本地存储中,库初始化时从本地存储读取Token,不要依赖运行时的状态管理数据
  • 规避厂商后台限制:引导用户开启应用的自启动权限、关闭电池优化、允许后台活动,国内厂商的定制系统默认会禁止第三方应用后台长期定位,可在应用内做专属引导页提示用户手动开启对应权限

现有配置参数优化

你当前的配置可做如下调整适配需求:

// 从持久化本地存储读取Token,不要用useSelector从内存读取
const Token = await AsyncStorage.getItem('AccessToken');

BackgroundGeolocation.configure({
  desiredAccuracy: BackgroundGeolocation.HIGH_ACCURACY,
  stationaryRadius: 10, // 司机端多为运动场景,调低阈值避免漏更位置
  distanceFilter: 30, // 调低到30米,适配低速行驶场景的更新需求
  notificationTitle: '正在获取位置以提供派单服务',
  notificationText: '服务运行中',
  debug: false,
  startOnBoot: true,
  stopOnTerminate: false,
  startForeground: true, // 新增参数,强制开启安卓前台服务保活
  locationProvider:  Platform.OS === 'android'
     ? BackgroundGeolocation.DISTANCE_FILTER_PROVIDER // 替换为距离过滤提供者,比活动提供者更适配持续运动场景
     : BackgroundGeolocation.DISTANCE_FILTER_PROVIDER,
  interval: 10000,
  fastestInterval: 5000, // 调低最快更新间隔,提升位置更新及时性
  activitiesInterval: 2000,
  stopOnStillActivity: false,
  url: CONSTANTS.BaseUrl + 'driver/updateCoordinate',
  syncUrl: CONSTANTS.BaseUrl + 'driver/updateCoordinate',
  syncThreshold: 1, // 新增参数,只要有1个未同步点位就触发重试
  maxLocations: 100, // 新增参数,最多缓存100个点位避免占用过多存储
  httpHeaders: {
    Authorization: Token,
  },
  postTemplate: {
    latitude: '@latitude',
    longitude: '@longitude',
  },
});

iOS端适配要求

  • Xcode中开启项目后台模式的Location Updates选项
  • 向用户申请始终允许定位权限,仅“使用期间允许”的权限无法支持进程被杀死后的位置更新
  • 配置pausesLocationUpdatesAutomatically: false,关闭iOS系统自动暂停定位更新的默认逻辑
  • 开启showsBackgroundLocationIndicator: true,状态栏显示定位图标,提升进程优先级避免被系统查杀

测试注意事项

  • 必须使用真机测试,模拟器的后台权限逻辑和真机不一致
  • 安卓端使用release包测试,debug包的调试逻辑会导致进程更容易被系统回收
  • 测试前确认应用已经获得所有要求的定位、通知权限,且已关闭电池优化限制

内容的提问来源于stack exchange,提问作者Muneeb Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:45:02