当前位置: 首页 > 知识库问答 >
问题:

如何使用Cordova for iOS禁用蓝牙功能以避免丢失NSBluetoothAlwaysUsageDescription的错误

魏澄邈
2023-03-14

我正在用Cordova为iOS/Android开发一个应用程序,该应用程序没有任何使用蓝牙的功能。可能在启动iOS 13之后,我很难将我的应用程序的新版本发布到AppStoreConnect。我收到了一封来自苹果的提醒电子邮件,注意信息列表中缺少NSBluetoothAlwaysUsageDescription密钥。

如上所述,我的应用程序不需要蓝牙功能,但一些插件可能没有我的意图就在使用它。

如果有人有同样的问题,请告诉我解决方法。

以下是我的环境。

科尔多瓦

  • 科尔多瓦7.1.0

插件

  • cordova admob sdk 0.22.0“admob sdk”

我想禁用蓝牙功能,并将我的应用程序传递给AppleStoreConnect。

共有3个答案

方建明
2023-03-14

问题是因为插件cordova admob sdk依赖于CoreBooth。框架 框架。如果我们可以将插件配置为不依赖蓝牙,那就太好了。因此,在插件修复该部分之前,我们可以用两种不同的方式解决问题。

解决方案一:

一种解决方案是添加一条声明,说明您的应用程序使用蓝牙。它可以在您的配置中配置。xml。

<platform name="ios">
    ...
    <config-file parent="NSBluetoothAlwaysUsageDescription" platform="ios" target="*-Info.plist">
       <string>
           This app requires access to your bluetooth. blah blah blah
       </string>
    </config-file>
    ...
</platform>

解决方案2:

第二个解决方案是自己删除对CoreBluetooth.framework的依赖。您可以从Xcode执行此操作。您只需要删除General下的CoreBluetooth.framework条目-

田普松
2023-03-14

我确认问题来自AdMob SDK(cordova AdMob SDK),这是cordova插件AdMob free的一个依赖项。

您是否知道使用的原因(AdMob SDK中的framework CoreBooth)是什么?或者有什么解决方案不使用此框架?

刘德义
2023-03-14

如果缺少此字符串,您将收到审查小组的官方声明:

ITMS-90683:Info.plist中缺少目的字符串-您的应用程序的代码引用一个或多个访问敏感用户数据的API。应用程序的Info.plist文件应包含一个NSBluetoothAlwaysUsageDescription键,其中包含一个面向用户的目的字符串,清楚完整地解释您的应用程序需要这些数据的原因。从2019年Spring开始,所有提交给App Store访问用户数据的应用程序都必须包含目的字符串。如果您使用的是外部库或SDK,它们可能会引用需要目的字符串的API。虽然您的应用程序可能不使用这些API,但仍然需要目的字符串。您可以联系库或SDK的开发人员,要求他们发布不包含API的代码版本。

如本声明中所述,您使用的某个插件很可能引用了蓝牙API。即使您的应用程序中没有使用此API,您仍然需要提供目的字符串。

因此,最简单、最快的解决方案(以及我自己是如何做到的)是:只需提供字符串,审核就会通过。您可以轻松地将此字符串添加到信息中。plist使用插件cordova custom config进行此操作。

 类似资料:
  • 我有一个Android应用程序,我正在开发。这是一个BTLE应用程序,我有一些BTLE标签,我需要谈谈。 我是按照书做的,发现设备,GATT连接(后续连接),写/读特性。。。它起作用了。 现在奇怪的是,如果我关闭并打开应用程序两次,它就会停止工作。 假设我已经有一个标签正确连接,粘合和正常工作。 手机重启。第一次打开应用程序- 在日志中,每次尝试都没有什么不同。我记录每个调用并打印返回状态:没有区

  • 本文向大家介绍RabbitMQ 怎么避免消息丢失?相关面试题,主要包含被问及RabbitMQ 怎么避免消息丢失?时的应答技巧和注意事项,需要的朋友参考一下 把消息持久化磁盘,保证服务器重启消息不丢失。 每个集群中至少有一个物理磁盘,保证消息落入磁盘。

  • 我扩展插件/gatt_example. c在Bluez源尝试BLE通知功能没有成功。我正在使用Bluez源中包含的电池服务示例。它具有1个具有READ和NOTIFY属性的特性。我添加dbus方法来调用attrib_db_update()来从蓝牙守护进程外部更新特征值。 现在,我可以连接哪个客户端(带有Android 4.3的Nexus4和iPhone(不含LightBlue的应用程序))并启动通知

  • 我有一个应用程序,可以管理设备的wifi和蓝牙状态。为此,它接收到一条带有状态的消息,并且该状态是否应该被强制。然后应用状态并保存两个值。 例如:我发送消息禁用wifi并强制使用。然后我关闭无线网络,拯救国家,这是被迫的。此外,我有一个BroadcastRecector,监听无线网络状态的变化,如果收到,它首先检查是否启用了无线网络,如果这是好的。这就像一个魅力:公共类无线状态接收器扩展了广播接收

  • jd.readBLECharacteristicValue(Object object) 读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持 read 才可以成功调用。 参数名 类型 默认值 必填 说明 deviceId string 是 蓝牙设备 id serviceId string 是 蓝牙特征值对应服务的 uuid characteristicId string 是 蓝牙

  • 本文向大家介绍Android实现蓝牙聊天功能,包括了Android实现蓝牙聊天功能的使用技巧和注意事项,需要的朋友参考一下 蓝牙,时下最流行的智能设备传输数据的方式之一,通过手机app和智能设备进行连接,获取设备上的测量数据,我们生活中随处可见的比如蓝牙智能手环,蓝牙电子秤,蓝牙心电测量设备等等。 本篇我将紧接着上篇结尾所写,一起来看下手机之间如何通过蓝牙实现文字聊天。 先贴出上篇的一些demo;