【问题标题】:Prompting for Bluetooth permission on Bug Sur (11.0.1)在 Big Sur (11.0.1) 上提示蓝牙权限
【发布时间】:2021-02-25 23:34:42
【问题描述】:

升级到 Big Sur (macOS 11.0.1) 后,我们的应用现在要求用户授予使用蓝牙的权限。但是,据我所知,我们没有运行任何蓝牙代码。我们确实链接了CoreBluetooth,但是一直这样,一直没有出现这个提示。

在 Xcode 12.2 中运行时,它确实会崩溃并显示以下消息:

2020-11-13 13:21:58.685610-0800 Fuze[31049:200367] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.

但据我所知,NSBluetoothAlwaysUsageDescription 仅适用于 iOS 设备。

我怀疑这是 Big Sur 的新功能,因为用于安全和隐私的系统偏好设置 UI -> 隐私,在 Catalina 中没有蓝牙部分,而在 Bug Sur 中却有。但是 Apple 文档没有提到此密钥适用于 macOS。 https://developer.apple.com/documentation/bundleresources/information_property_list/nsbluetoothalwaysusagedescription

所以我的问题是:

  1. 这个密钥现在是否适用于 macOS 并且我们应该拥有它,即使文档说它仅适用于其他平台,或者是否有不同的蓝牙密钥用于 macOS?我还没找到。
  2. 有没有办法控制这个提示,因为我们实际上并没有使用蓝牙代码。我们需要特定功能的框架,但它并不适用于许多用户,因此在应用启动时立即请求许可会令人困惑。

谢谢!

【问题讨论】:

  • 我在尝试从 Big Sur 上的 Xcode 12 运行 GATT 外设(用 swift 编写)时遇到了同样的问题。非常沮丧!

标签: security bluetooth prompt user-permissions macos-big-sur


【解决方案1】:

我对此没有信心,但我今天也在 Big Sur 上遇到了一些蓝牙问题。就我而言,我从终端运行蓝牙外围设备,最近还提示我向终端提供蓝牙权限(我以前从未见过)。

出于测试目的,您可以尝试“隐私 - 蓝牙外围设备使用说明”或“隐私 - 蓝牙始终使用说明” - 看看是否可以解决崩溃问题(我认为可以)。这很奇怪,因为我认为过去这些都不是必需的 - 但看起来 Big Sur 肯定在打击权限。

当您转到“签名和功能”时,如果在“应用沙箱”中有启用“硬件 -> 蓝牙”的选项 - 我也会尝试一下(您可能还需要启用位置,但我不记得了)。我很好奇修改该标志是否会改变有关权限的任何内容。

当您链接到 CoreBluetooth 时,您是否在使用 API?因为权限检查应该发生在第一个 API 调用上。但是,蓝牙很奇怪,所以它可能会在应用程序启动后立即启动......

考虑到这一点,我实际上从未在应用程序中选择性地使用蓝牙 - 它总是从应用程序启动时初始化,所以我不能说权限检查何时发生。

【讨论】:

  • 感谢您的想法! - 我尝试添加“隐私 - 蓝牙始终使用说明”键,这确实解决了崩溃问题,所以这似乎是使用的关键 (NSBluetoothAlwaysUsageDescription) - 我认为我们没有调用任何 CoreBluetooth 函数,至少,不是我见过的,但也许我们的第三方库之一是因为它们处理耳机。或者像你说的,仅仅链接到框架就足以触发权限提示。 - 关于硬件 -> 蓝牙选项,我没有看到,但这可能是因为该应用程序没有沙盒。
猜你喜欢
  • 2021-02-14
  • 1970-01-01
  • 2021-02-26
  • 2021-02-26
  • 1970-01-01
  • 2020-02-15
  • 2021-03-19
  • 1970-01-01
  • 2022-09-27
相关资源
最近更新 更多