Cordova 8应用提交App Store因NSBluetoothAlwaysUsageDescription被拒求助
解决Cordova应用提交iOS App Store因NSBluetoothAlwaysUsageDescription被拒的问题
我之前处理过类似的Cordova插件引发的隐私权限审核问题,给你梳理几个关键的排查和解决步骤:
1. 确认配置是否真正同步到Xcode项目
有时候Cordova的config.xml配置不会完全同步到Xcode的Info.plist中,你需要做以下检查:
- 先确认你的
config.xml中配置格式是否正确,应该是在iOS平台下添加:
<platform name="ios"> <config-file parent="NSBluetoothAlwaysUsageDescription" target="*-Info.plist"> <string>我们的应用本身不使用蓝牙功能,此描述仅用于满足依赖插件的API引用审核要求</string> </config-file> </platform>
- 执行
cordova clean ios && cordova build ios重新构建项目,然后打开Xcode项目,查看Info.plist文件,确认NSBluetoothAlwaysUsageDescription键是否存在,且描述内容正确。如果还是没有,手动在Xcode的Info.plist中添加该键和描述。
2. 排查并移除插件中不必要的蓝牙API引用
既然你的应用本身不使用蓝牙,那问题大概率出在第三方插件上:
- 找到项目中引用蓝牙相关API的插件,查看插件的
plugin.xml文件,检查是否有引入CoreBluetooth.framework的配置,比如:
<framework src="CoreBluetooth.framework" weak="true" />
如果插件没有实际使用蓝牙功能,你可以移除这一行配置,然后重新构建项目。
- 用Xcode的全局搜索功能,在项目中搜索
CoreBluetooth、CBCentralManager等蓝牙相关类,确认是否有实际的调用代码。如果只是插件中的空引用或冗余代码,可以手动修改插件代码移除这些引用。 - 检查Xcode项目的
Build Phases->Link Binary With Libraries列表,若存在CoreBluetooth.framework且不需要,点击“-”按钮移除它。
3. 向苹果审核团队提交申诉说明
如果上述步骤都完成后仍然被拒,你可以在App Store Connect的审核反馈页面提交申诉,清晰说明情况:
尊敬的审核团队:
您好!我们的应用“MyApp”版本4.19.2.4本身并未实现任何蓝牙相关功能,此次被拒是因为我们使用的部分Cordova第三方插件中包含了对蓝牙API的引用,但并未实际调用该功能。我们已在Info.plist中添加了NSBluetoothAlwaysUsageDescription键及对应的用途说明,同时我们也正在排查并移除插件中不必要的蓝牙API引用。恳请您重新审核我们的应用,感谢您的理解与支持。
内容的提问来源于stack exchange,提问作者Aubrey Quinn




