IOBluetooth 通过沙盒访问阻止

Posted

技术标签:

【中文标题】IOBluetooth 通过沙盒访问阻止【英文标题】:IOBluetooth block by sandbox access 【发布时间】:2021-09-09 06:13:34 【问题描述】:

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

[用户默认值] 无法读取 CFPrefsPlistSource(域:com.apple.Bluetooth,用户: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need 刷新:是):访问应用程序之外的首选项 容器需要 user-preference-read 或 file-read-data 沙箱 访问

在进行一些谷歌搜索并启用 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
        
    


【问题讨论】:

查看 Info.plist。 @El Tomato 我需要添加什么键/值?我尝试添加 Privacy - Bluetooth Always Usage Description 和 Privacy - Bluetooth Peripheral Usage Description 并得到相同的结果 只有三个地方可以看:Capabilities、Info.plist、Development profile。此外,请仔细查看您发布的错误消息。 【参考方案1】:

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

【讨论】:

以上是关于IOBluetooth 通过沙盒访问阻止的主要内容,如果未能解决你的问题,请参考以下文章

在 OSX 上模拟 HID:IOBluetooth 还是 CoreBluetooth?

IOBluetooth 和 IOBluetoothUI 库检测不同的外设,它们之间有啥区别吗?

带有“允许同源”标志错误的 iframe 沙盒

Jenkins 错误 - <URL> 中的脚本执行被阻止。因为文档的框架是沙盒的,并且没有设置“允许脚本”权限

将文件存储在 iphone 的沙盒之外或通过其他应用程序访问文件系统

IOS - 如何阻止所有来电?