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

Expo/EAS开发React Native应用App Store审核遭拒及位置权限描述不生效问题

Expo/EAS开发RN应用App Store审核被拒及位置权限弹窗异常解决方法

问题背景

App Store审核拒绝原因:
我们发现您的应用请求获取用户位置权限,但未在用途字符串中充分说明位置信息的使用场景。为帮助用户充分了解数据使用方式,权限请求弹窗需解释并举例说明应用将如何使用所请求的信息。

我用Expo/EAS开发了一款小型React Native应用,提交App Store时被拒,同时还遇到一个问题:明明在app.json里配置了位置权限的用途字符串,但弹窗显示的根本不是我设置的内容。以下是app.json中的iOS属性配置:

"ios": {
    "config":{
        "googleMapsApiKey":"MyGoogleMapsApiKey"
    },
    "supportsTablet": false,
    "icon": "./assets/icon.png",
    "bundleIdentifier": "com.goethedeveloper.apprecuerdos",
    "infoPlist": {
        "NSLocationAlwaysAndWhenInUseUsageDescription": "AppRecuerdos uses your real-time location only to detect the checkpoint you are in.",
        "NSLocationUsageDescription": "AppRecuerdos uses your real-time location only to detect the checkpoint you are in."
    },
    "buildNumber": "12"
},

权限授权弹窗截图:
权限授权弹窗截图


解决方案

一、解决弹窗内容不匹配的问题

  1. 核对权限字段与请求类型是否对应
    iOS不同位置权限请求对应不同的Info.plist字段:

    • 若应用仅在前台使用时请求位置,必须配置NSLocationWhenInUseUsageDescription
    • 若需要后台也能获取位置,才需要NSLocationAlwaysAndWhenInUseUsageDescription
    • NSLocationUsageDescription是iOS 11之前的旧字段,当前版本基本不再生效
      你当前的配置可能和实际请求的权限类型不匹配,导致系统显示默认提示,补全对应字段即可。
  2. 清理EAS缓存后重新构建
    Expo/EAS有时会缓存旧配置,执行以下命令彻底清理后重新打包:

    eas build --clean --platform ios
    
  3. 检查第三方库的权限覆盖
    若使用了react-native-maps这类位置相关库,部分库会自动添加权限配置,可能覆盖app.json中的设置。可以执行expo prebuild生成原生项目,直接打开ios/[你的项目名]/Info.plist文件,确认权限字段是否为你设置的内容。

二、解决审核拒绝的权限说明问题

苹果要求权限说明必须具体直白,不能笼统。你当前的描述可以优化得更清晰,比如:

"NSLocationWhenInUseUsageDescription": "AppRecuerdos仅在您使用应用时获取实时位置,用来检测您当前所在的打卡点,帮您记录行程回忆,不会在后台收集位置信息。",
"NSLocationAlwaysAndWhenInUseUsageDescription": "AppRecuerdos需要获取实时位置(包括后台运行时),用来检测您当前所在的打卡点,帮您自动完成行程回忆的记录。"

重点要说明权限用途(检测打卡点)、使用时机(仅前台/后台也可用),让用户一眼明白位置数据的使用方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:46:11