Expo应用因位置权限说明不足遭App Store拒审问题排查
Expo应用App Store拒审(位置权限说明失效)排查与解决方案
拒审原因排查
- 权限配置优先级冲突:Expo 49中
expo-location插件的权限配置会直接覆盖app.json里infoPlist的手动配置,若插件内的权限说明设置不规范或内容模糊,会触发系统默认提示。 - 权限键配置不完整:若应用请求后台位置权限,仅配置
NSLocationWhenInUseUsageDescription是不够的,需同时补充NSLocationAlwaysAndWhenInUseUsageDescription和NSLocationAlwaysUsageDescription,缺失会导致说明不生效或被判定用途不明确。 - 构建缓存未更新:旧的构建缓存可能保留了默认权限文本,新配置的自定义说明未被打包进应用包。
合规解决方案
- 修正
expo-location插件配置:确保插件内的权限说明清晰具体,明确告知用户位置信息的使用场景,示例配置如下:{ "expo": { "plugins": [ [ "expo-location", { "locationAlwaysAndWhenInUsePermission": "我们需要获取您的位置信息,用于为您推荐周边商家、提供实时导航服务,以及在后台同步订单位置状态。", "locationWhenInUsePermission": "我们需要获取您的位置信息,用于为您推荐周边商家、提供实时导航服务。" } ] ] } } - 补充完整
infoPlist权限键:对应所有用到的位置权限,添加明确的用途说明,示例:{ "expo": { "ios": { "infoPlist": { "NSLocationWhenInUseUsageDescription": "我们需要获取您的位置信息,用于为您推荐周边商家、提供实时导航服务。", "NSLocationAlwaysAndWhenInUseUsageDescription": "我们需要获取您的位置信息,用于为您推荐周边商家、提供实时导航服务,以及在后台同步订单位置状态。", "NSLocationAlwaysUsageDescription": "我们需要在后台获取您的位置信息,用于同步订单位置状态。" } } } } - 清理构建缓存:运行
npx expo prebuild --clean(裸工作流),或在EAS构建时勾选清除缓存选项,确保新配置的权限说明被正确打包。 - 验证权限提示:在iOS真机或模拟器上测试应用,确认权限弹窗显示自定义的说明文本,而非默认提示。
- 重新提交审核:完成上述修改后重新构建应用并提交,可在审核备注中说明已更新位置权限的用途说明,明确告知苹果权限的具体使用场景。
内容的提问来源于stack exchange,提问作者Muhammad Abbas
相关产品推荐
相关产品推荐

