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

React Native Expo后台定位配置报错求助:已配置仍提示需添加UIBackgroundModes

解决Expo后台位置追踪配置错误的方案

1. 确认app.json的完整配置

确保你的app.json中iOS权限和expo-location插件配置完全正确,两者缺一不可:

{
  "expo": {
    "ios": {
      "infoPlist": {
        "UIBackgroundModes": ["location", "fetch"],
        "NSLocationAlwaysAndWhenInUseUsageDescription": "需要后台位置权限来持续追踪你的位置",
        "NSLocationWhenInUseUsageDescription": "需要前台位置权限来显示你的位置"
      }
    },
    "plugins": [
      [
        "expo-location",
        {
          "backgroundLocationUpdates": true,
          "locationAlwaysAndWhenInUsePermission": "需要后台位置权限来持续追踪你的位置"
        }
      ]
    ]
  }
}
  • UIBackgroundModes必须包含"location",拼写不能出错
  • 必须添加位置权限描述字段,否则iOS会直接拒绝权限请求

2. 正确请求后台位置权限并启动任务

在启动位置追踪前,必须先请求后台位置权限,且startLocationUpdatesAsync必须传入完整配置参数,不能仅传任务名:

import * as Location from 'expo-location';

const startLocationTracking = async () => {
  // 先请求后台位置权限
  const { status } = await Location.requestBackgroundPermissionsAsync();
  if (status !== 'granted') {
    alert('需要开启后台位置权限才能继续');
    return;
  }

  // 前台位置监听(按需保留)
  const foregroundWatcher = await Location.watchPositionAsync(
    { accuracy: Location.Accuracy.BestForNavigation, distanceInterval: 1 },
    (location) => {
      dispatch(setCurrentLocation(location.coords));
      sendLocationToAPI(location);
    }
  );

  // 后台位置更新任务,必须传入配置对象
  await Location.startLocationUpdatesAsync('background-location', {
    accuracy: Location.Accuracy.BestForNavigation,
    distanceInterval: 1,
    showsBackgroundLocationIndicator: true, // iOS会显示后台追踪指示器
  });
};
  • 必须优先调用requestBackgroundPermissionsAsync,否则后台任务无法启动
  • startLocationUpdatesAsync的第二个配置参数是必填项,仅传任务名会导致配置不生效

3. 重启Expo服务生效配置

修改app.json后,必须执行expo start --clear重启开发服务器,否则新配置不会被加载到Expo Go中。同时确保使用的是最新版本的Expo Go,旧版本可能存在配置兼容问题。

4. 验证iOS系统权限设置

即使代码配置正确,用户需要在iOS系统设置中为App开启始终允许位置权限,否则系统会限制后台位置追踪功能。

内容的提问来源于stack exchange,提问作者maxwell morgenbesser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:01:55