Expo/React Native应用遭苹果拒审:未用Notification Center却触发违规
Expo/React Native应用未使用Notification Center却因2.5.1条款被App Store拒审
问题描述
应用基于Expo/React Native开发,已在App Store和Google Play上架1年,此前通过苹果审核,近期更新版本时因违反《App Store审核指南》2.5.1条款(性能-软件要求)被拒审。苹果称应用未合规使用Notification Center相关公共API,违反开发者计划许可协议3.3.1条,但开发者自查代码中所有含notif的内容,未发现任何Notification Center相关使用痕迹。应用依赖包如下:
"dependencies": { "@react-native-async-storage/async-storage": "^1.15.11", "@react-navigation/native": "^6.0.6", "@react-navigation/native-stack": "^6.2.5", "expo": "~43.0.2", "expo-av": "^10.1.3", "expo-brightness": "^10.0.3", "expo-keep-awake": "^10.0.0", "expo-localization": "~11.0.0", "expo-status-bar": "~1.1.0", "expo-web-browser": "~10.0.3", "i18n-js": "^3.8.0", "lodash": "^4.17.21", "react": "17.0.1", "react-dom": "17.0.1", "react-native": "0.64.3", "react-native-safe-area-context": "^3.3.2", "react-native-screens": "^3.9.0", "react-native-web": "0.17.1" }, "devDependencies": { "@babel/core": "^7.12.9" }
排查与解决方法
一、依赖包排查
从给出的依赖列表看,没有直接引入expo-notifications或其他通知相关模块,但需注意:
- Expo SDK 43的核心包可能在打包时默认包含部分系统API的引用(即使未主动使用),导致苹果检测工具误判
- 检查间接依赖:执行以下命令排查是否有依赖链引入通知相关模块:
# npm用户 npm ls expo-notifications # yarn用户 yarn why expo-notifications
二、具体解决步骤
- 排除未使用的模块:在
app.json的expo.ios配置中添加excludeModules,明确排除通知相关模块,避免打包时误包含:"expo": { "ios": { "excludeModules": ["expo-notifications"] } } - 清理缓存并重新构建:彻底清理Expo缓存后重新打包,确保没有旧代码残留:
expo r -c expo build:ios --clear-cache - 提交申诉并提供证据:
- 准备代码搜索
notif关键词的截图(证明无相关代码) - 准备依赖树排查结果(证明无通知相关依赖)
- 在拒审申诉中明确说明:应用从未使用Notification Center相关API,请求苹果重新审核
- 准备代码搜索
- 升级Expo SDK(可选):若上述方法无效,尝试升级到较新的稳定Expo SDK版本(如44+),新版本优化了模块打包逻辑,减少冗余API引用的可能性
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

