首先,我想声明我已经在这里看过Stack Overflow帖子,添加iCoder和Deepak提到的任何一个都没有为我解决问题。
我正在使用 React-Native 来开发我的应用程序,包括我找到的这个 React-Native-Permissions 包。他们的文档指出,我应该添加他们的软件包启用的所有权限,例如位置,相机和那里提到的所有其他权限。完成此操作后,我可以将我的应用程序上传到商店并提交以供审核。
今天我到了办公室,我看到苹果有一些反馈。因此,在我完成反馈后,我想再次重新上传到商店(按我应该做的增加内部版本号)。
现在,当我像这样将它显示在我的info.plist中时,我不断收到上述标题中的消息
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes the react-native-permissions library, which references this permission in its code.</string>
编辑:
我希望在下面澄清一些事情,以便找到我所面临的问题的答案。标题中给出的错误在上传到商店后直接发生(所以我猜实际错误是由系统完成的自动检查拾取的)。
下面的答案不会帮助我解决问题,因为自动系统检查不会检查更具描述性的字符串。我已经成功地将此字符串用于 info.plist 中的其他元素。接下来,我发现了人们使用这种策略成功将他们的应用程序提交到应用商店的证据。如 Gradner 在此链接后的评论所示 反应本机权限问题 266
不使用蓝牙,
只需将其添加到您的 Info.plist 文件中:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes the react-native-permissions library, which references this permission in its code.</string>
Apple 弃用了 NSBluetoothPeripheralUsageDescription 属性,转而使用 NSBluetoothAlwaysUsageDescription。
详情请见此处: 链接到苹果文档
如果您使用的是蓝牙,
只需将其添加到您的 Info.plist 文件中:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app uses bluetooth to find, connect and transfer data between different devices</string>
有人发布了一个对我有帮助的答案,但随后删除了它!套用答案:
在不知道触发Apple错误的原因的情况下将隐私密钥添加到plist中并不是解决此问题的最佳方法。
就我而言,当我进行 grep 搜索时,我发现我的project.pbxproj
中有一些对CoreBluetooth.framework
的引用。我删除了引用,构建和测试上传成功!
要搜索,请使用以下命令:
grep -r -a CoreBluetooth.framework ProjectFolder
我找到了根本原因
我们在 plist 中有两个默认选项来输入蓝牙用法。
1.隐私 - 蓝牙外设使用说明 2.隐私 - 蓝牙始终使用说明
但是 Xcode 将此选项保存在源代码中,如下所示
1.NSBluetooth外设使用说明而不是隐私 - 蓝牙外设使用说明
2.隐私 - 蓝牙始终使用说明而不是隐私 - 蓝牙始终使用说明
所以现在的重点是 NSBluetooth外围使用说明已被弃用,它期望键"NSBluetoothAlwaysUsageDescription">
这是解决方案,在 Xcode 中打开 plist 文件作为源代码,然后 复制粘贴以下键值对
密钥:NSBluetooth始终用法说明值:此应用程序 需要蓝牙才能呸呱
。
我不知道为什么第一次它不起作用,但是当我今天进入办公室时,我看到了Sumeet.Jain发布的评论,建议我应该替换
NSBluetooth外围使用描述键与NSBluetoothAlwaysUsage描述键
这实际上会导致一个错误,即缺少NSBluetooth外围设备使用描述,正如我们可能期望的那样。因此,我将NSBluetoothPeripheralUsageDescription重新添加到我的info.plist中,现在我终于可以将我的应用程序上传到商店。感谢所有帮助过我的人。
附言与昨天相比,我唯一能想到的不同之处在于,我现在使用 Xcode 添加了密钥,而不仅仅是在我用于 react-native 的编辑器中编辑 info.plist 文件。希望这对其他人有帮助,因为它帮助了我
好吧,我解决了这个问题。
如果你的应用正在使用蓝牙,则必须将其添加到 info.plist。
NSBluetoothAlwaysUsage说明
我们的应用程序使用蓝牙...做点什么。。。
如果你的应用不需要蓝牙,但出现意外提示。
然后:
打开 Xcode : 去删除 CoreBluetooth.framework:
- ->你的项目 ->框架 -> 核心蓝牙框架
- ->您的项目 ->构建阶段 -> 类型搜索以查找"蓝牙"(删除所有相关的"蓝牙")
它对我有用! 希望对您有所帮助。
对于早于 iOS 13 的部署目标,请将 NSBluetoothAlwaysUsageDescription 和 NSBluetoothPeripheralUsageDescription 添加到应用的信息属性列表文件中
字符串取决于您是否使用蓝牙。
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes some library, which references this permission in its code.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Our app does not request this permission or utilize this functionality but it is included in our info.plist since our app utilizes some library, which references this permission in its code.</string>
当应用程序打开时,我能够成功删除蓝牙权限警报。就我而言,问题出在库的"反应本机连接状态"上。我将库从版本"1.5.2"降级到"1.5.1"。
以下是步骤:
改变
"react-native-connectivity-status": "^1.5.1",
自
"react-native-connectivity-status": "1.5.1",
然后运行以下命令:
rm -rf node_modules/
rm package-lock.json
npm i
cd ios/
rm -rf Pods/
pod install