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

Expo SDK 42及以上版本如何正确获取后台位置权限

Expo SDK 42+ 后台位置权限报错解决方案

你遇到的报错是iOS系统要求必须在Info.plist中声明定位用途描述导致的,Expo托管工作流无需手动修改Info.plist,按以下步骤操作即可解决:

1. 确认依赖安装

确保已安装适配当前SDK版本的expo-location包:
npx expo install expo-location

2. 配置app.json/app.config.js

在项目根目录的配置文件中添加以下原生配置,Expo构建时会自动生成对应的Info.plist字段:

{
  "expo": {
    // 配置expo-location插件,自动生成权限描述
    "plugins": [
      [
        "expo-location",
        {
          "locationWhenInUsePermission": "需要前台定位权限以在使用应用时获取您的位置",
          "locationAlwaysAndWhenInUseUsageDescription": "需要后台定位权限以在应用退后台时持续追踪位置"
        }
      ]
    ],
    "ios": {
      // 声明后台运行模式,允许后台定位
      "backgroundModes": ["location"],
      // 兼容iOS 10及更低版本的权限描述,无需兼容可删除
      "infoPlist": {
        "NSLocationAlwaysUsageDescription": "需要后台定位权限以在应用退后台时持续追踪位置"
      }
    },
    // 安卓后台定位配套权限,无需适配安卓可删除
    "android": {
      "permissions": [
        "ACCESS_FINE_LOCATION",
        "ACCESS_COARSE_LOCATION",
        "ACCESS_BACKGROUND_LOCATION"
      ]
    }
  }
}

3. 调整权限请求逻辑

iOS系统强制要求必须先获取前台定位权限,才能发起后台权限请求,同时添加错误捕获避免未处理的Promise rejection:

async function getBackgroundLocationAsync() {
  // 先请求前台权限
  const foregroundRes = await Location.requestForegroundPermissionsAsync();
  if (foregroundRes.status !== 'granted') {
    setErrorMsg('前台定位权限被拒绝,无法使用定位功能');
    return;
  }
  try {
    // 前台权限获取成功后再请求后台权限
    const backgroundRes = await Location.requestBackgroundPermissionsAsync();
    if (backgroundRes.status !== 'granted') {
      setErrorMsg('后台定位权限被拒绝,无法在后台追踪位置');
      return;
    }
    const backgroundLocation = await Location.getBackgroundPositionAsync({});
    setBackgroundLocation(backgroundLocation);
  } catch (err) {
    console.error('获取后台定位失败:', err);
    setErrorMsg('获取后台定位失败,请稍后重试');
  }
}

getBackgroundLocationAsync();

4. 重新构建应用

修改原生配置后无法在Expo Go中直接生效,需要通过EAS构建对应包:

  • 开发测试用:执行eas build --profile development --platform ios构建开发客户端
  • 正式发版用:执行eas build --profile production --platform ios构建生产包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:27:06