IOBluetooth 通过沙箱访问阻止

IOBluetooth block by sandbox access

我正在尝试在 MacOS 11.4 上使用带有 Xcode 12.5.1 的 IOBluetooth 来获取连接到我的计算机的蓝牙设备列表。但是我收到了这个错误。

[User Defaults] Couldn't read values in CFPrefsPlistSource<0x600000af6b80> (Domain: com.apple.Bluetooth, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): accessing preferences outside an application's container requires user-preference-read or file-read-data sandbox access

在进行一些 google 搜索并启用 App Sandboxing 中的每个权限并将隐私 - 蓝牙始终使用说明和隐私 - 蓝牙外围设备使用说明添加到 info.plist 之后,我得到了相同的结果。我似乎无法找出导致问题的原因。

这是我的代码:

import Cocoa
import IOBluetooth

class ViewController: NSViewController {

let ioBluetoothDevice = IOBluetoothDevice()

override func viewDidLoad() {
        super.viewDidLoad()

        print(IOBluetoothDevice.pairedDevices() ?? "No Paired Devices") // <- returns empty array even though I have a keyboard and mouse connected
        
    }

}

原来我在错误的目标上为 App Sandbox 启用了蓝牙。 (感谢@El Tomato)