Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSBluetooth始终需要使用说明,但未使用蓝牙_Ios_Xcode_Permissions_Xcode11 - Fatal编程技术网

Ios NSBluetooth始终需要使用说明,但未使用蓝牙

Ios NSBluetooth始终需要使用说明,但未使用蓝牙,ios,xcode,permissions,xcode11,Ios,Xcode,Permissions,Xcode11,在部署新Xcode 11 GM Seed 2的ios应用程序中,apple返回错误: ITMS-90683:Info.plist中缺少目的字符串,NSBluetooth始终使用说明 阅读 问题是我的应用程序中没有使用蓝牙。也许我不知道。我如何才能找到为什么需要此许可目的 我没有使用CoreBluetooth。framework应用程序中的第三方库/框架/机架可能正在使用CoreBluetooth。只需在Info.plist中添加NSBluetoothAlwaysUsageDescription,

在部署新Xcode 11 GM Seed 2的ios应用程序中,apple返回错误: ITMS-90683:Info.plist中缺少目的字符串,NSBluetooth始终使用说明

阅读

问题是我的应用程序中没有使用蓝牙。也许我不知道。我如何才能找到为什么需要此许可目的


我没有使用CoreBluetooth。framework

应用程序中的第三方库/框架/机架可能正在使用CoreBluetooth。只需在Info.plist中添加
NSBluetoothAlwaysUsageDescription
,错误就会消失。

如果您的应用程序的部署目标早于iOS 13,由于项目中的一个或多个第三方使用蓝牙功能,因此除了NSBluetooth始终使用NSBluetooth描述码外,还将NSBluetooth外围设备使用描述码添加到应用程序的信息属性列表文件中。

显然苹果已对某些策略进行了更改。否则,要求使用未使用的旗帜是不明智的。这很令人担忧。
由于这些原因,我的应用程序也被拒绝了,而旧版本的应用程序都没有这个功能。

我今天也遇到了同样的问题。当我进行grep搜索时,我发现project.pbxproj中有一些对coreblutooth.framework的引用

我删除了引用,构建应用程序的过程很顺利。上传到苹果,它通过了,所以这对我来说很有效

要搜索,请使用以下命令

grep -r -a CoreBluetooth.framework ProjectFolder

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

或者,您可以右键单击Info.plist并打开As->Source Code,然后以xml的形式粘贴到两行中:

<?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>

....
NSBluetooth外围设备用途说明
我们使用蓝牙连接到MantisX硬件设备。
....

我可以通过扫描符号用法,特别是查找
CBCentralManager
来消除核心蓝牙用法。我为此编写的脚本:

#/usr/bin/env bash
#
#find-bluetooth-usages.sh。。。
检查\u参考\u核心蓝牙(){
nm“$1”| grep“CBCentralManager”2>&1>/dev/null
}
查找_用法(){
应用程序路径=$1
如果[!-d$app|u path |!-d“$app|u path/Frameworks”];那么
echo“$app_路径不是有效的应用程序目录。”
出口1
fi
应用程序文件名=$(基本名称--“$app\u路径”)
app_name=“${app_filename%.*}”
如果选中“引用”$app\u path/$app\u name”,则
echo“$app_name包含对CoreBluetooth的引用”
fi
对于$(ls“$app\u path/Frameworks”| egrep'\.framework$”)中的框架文件名,请执行以下操作
framework_path=“$app_path/Frameworks/$framework_filename”
framework\u name=$(basename“$framework\u path.framework)
如果选中“引用”$framework\u path/$framework\u name”,则
echo“$framework\u name包含对CoreBluetooth的引用”
fi
完成
}
对于“$@”中的arg;做
查找_用法“$arg”
完成
这将挖掘主要二进制文件及其包含的框架,以查找
CBCentralManager
参考。例:


/find-bluetooth-usages.sh/path/to/MyApp.app
我尝试了Maurice的答案,包括
.framework
扩展和不包括
.framework
扩展,但在我的项目中没有找到任何关于
核心蓝牙的参考。
我之前还在
Info.plist
文件中添加了:“
隐私-蓝牙外围设备使用说明”
”,字符串值为:“
应用程序希望将蓝牙用于通信目的”
”。 这也不起作用。
最后,在看到Chase Roberts的回答后,我添加了:“
NSBluetooth始终使用说明”
”,字符串值为:“
应用程序希望将您的蓝牙用于通信目的”
”。 此后,在发布时,我的应用程序不再显示此错误


注意:在错误警告中:
ITMS-90683
,因为我的应用程序已成功交付,但如果我希望对所述问题进行更改,我可以。

您应该将NSBluetooth外围设备说明和NSBluetooth始终使用说明添加到您的Info.plist文件中。您的Info.plist文件位于(默认情况下)在您的项目文件夹“支持文件”组中,可以称为类似{PROJECTNAME}-Info.plist的名称。您可以选择添加它。 一种选择是使用vim或其他工具从命令行编辑文件。然后添加以下行:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>App would like to use your bluetooth for communication purposes</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App would like to use your bluetooth for communication purposes</string>
NSBluetooth始终使用说明
应用程序希望将您的蓝牙用于通信目的
NSBluetooth外围设备用途说明
应用程序希望将您的蓝牙用于通信目的
第二种选择是双击XCode中的Info.plist文件并使用“超级有用”命令XCode编辑器。这个讨厌的编辑器实际上没有下拉列表中的NSBluetoothAlwaysUsageDescription,您必须手动添加它。非常有用。无论如何,在信息属性列表标题的右侧有一个加号按钮,只需单击它。在步骤1中,您可以查找“隐私-蓝牙外围设备使用说明”。这是NSBluetooth外围设备使用说明的可读名称。然后只需单击右侧的值部分并输入文本,如“应用程序希望将蓝牙用于通信目的”完成后,再次单击相同的加号按钮,您将获得相同的drpdown列表。忽略该列表,只需将字符串NSBluetoothAlwaysUsageDescription粘贴到该列表。然后单击右侧的值并粘贴“应用程序希望将蓝牙用于通信目的”。

Swift 5

<key>NSBluetoothAlwaysUsageDescription</key>
<string>App would like to use your bluetooth for communication purposes</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App would like to use your bluetooth for communication purposes</string>
NSBluetooth始终使用说明
应用程序希望将您的蓝牙用于通信目的
NSBluetooth外围设备用途说明
应用程序希望将您的蓝牙用于通信目的

就我而言,我没有使用任何与蓝牙相关的API,但应用程序正在崩溃