首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要NSBluetoothAlwaysUsageDescription,但不使用蓝牙

需要NSBluetoothAlwaysUsageDescription,但不使用蓝牙
EN

Stack Overflow用户
提问于 2019-09-18 08:03:46
回答 10查看 16.8K关注 0票数 18

在我的ios应用程序中,新的Xcode 11 GM种子2部署后,苹果返回错误:ITMS-90683:在Info.plist和NSBluetoothAlwaysUsageDescription中缺少目的字符串。

https://developer.apple.com/documentation/bundleresources/information_property_list/nsbluetoothalwaysusagedescription?language=objc readed.

问题是我没有在我的应用程序中使用蓝牙。或者也许我不知道。我怎样才能找出为什么需要这样的许可?

我不使用CoreBluetooth.framework

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2019-09-18 20:47:08

我今天也有同样的问题。当我搜索grep时,我发现在我的CoreBluetooth.framework中有一些对project.pbxproj的引用。

我删除了参考资料,构建应用程序也很好。上传到苹果,它通过了,所以这对我有效。

若要搜索,请使用以下命令

代码语言:javascript
运行
复制
grep -r -a CoreBluetooth.framework ProjectFolder
票数 12
EN

Stack Overflow用户

发布于 2019-09-19 07:25:21

打开Info.plist并添加一个NSBluetoothAlwaysUsageDescription。您可以在编辑器中通过添加如下行项来完成此操作:

或者,您可以右键单击Info.plist和Open ->源代码,并将其粘贴到两行适当的xml中:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    ....
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>We use Bluetooth to connect to the MantisX hardware device.</string>
    ....
</dict>
</plist>
票数 6
EN

Stack Overflow用户

发布于 2019-09-19 18:12:31

我能够通过扫描符号用法来消除CoreBluetooth用法,特别是寻找CBCentralManager。我写的剧本是这样做的:

代码语言:javascript
运行
复制
#!/usr/bin/env bash
#
# find-bluetooth-usages.sh <app1.app> <app2.app> ...

check_references_corebluetooth() {
  nm "$1" | grep "CBCentralManager" 2>&1 >/dev/null
}

find_usages () {
  app_path=$1
  if [[ ! -d $app_path || ! -d "$app_path/Frameworks" ]]; then
    echo "$app_path is not a valid app directory."
    exit 1
  fi
  app_filename=$(basename -- "$app_path")
  app_name="${app_filename%.*}"

  if check_references_corebluetooth "$app_path/$app_name"; then
    echo "$app_name contains references to CoreBluetooth"
  fi
  for framework_filename in $(ls "$app_path/Frameworks" | egrep '\.framework$'); do
    framework_path="$app_path/Frameworks/$framework_filename"
    framework_name=$(basename "$framework_path" .framework)
    if check_references_corebluetooth "$framework_path/$framework_name"; then
      echo "$framework_name contains references to CoreBluetooth"
    fi
  done
}

for arg in "$@"; do
  find_usages "$arg"
done

这将深入研究主要二进制+其包含的框架,以找到CBCentralManager引用。例如:

./find-bluetooth-usages.sh /path/to/MyApp.app

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57987863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档