You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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的全局搜索功能,在项目中搜索CoreBluetoothCBCentralManager等蓝牙相关类,确认是否有实际的调用代码。如果只是插件中的空引用或冗余代码,可以手动修改插件代码移除这些引用。
  • 检查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

火山引擎 最新活动