我正在尝试访问macOS(2017 iMac)上的蓝牙外设,但CBCentralManager
似乎永远不会进入.poweredOn
状态。
import Cocoa
import CoreBluetooth
class BluetoothManager: NSObject {
var centralManager: CBCentralManager!
override init() {
super.init()
self.centralManager = CBCentralManager(delegate: self, queue:nil)
self.checkState()
}
func checkState() {
print("central state: \(self.centralManager?.state.rawValue ?? -1)")
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(2), execute: {
self.checkState()
})
}
}
extension BluetoothManager: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
print("Power on")
case .unsupported:
print("Unsupported")
default:break
}
}
}
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var bluetoothManager: BluetoothManager?
func applicationDidFinishLaunching(_ aNotification: Notification) {
self.bluetoothManager = BluetoothManager()
}
...
}
这将始终输出Unsupported
,并带有控制台警告
[CoreBluetooth] XPC connection invalid
我知道我试过的Info.plist
密钥NSBluetoothPeripheralUsageDescription
,但我相信这只适用于iOS设备。
我是否正在寻找在iMac上管理蓝牙的错误方向?或者我的实现缺少什么?我觉得我已经涵盖了Core Bluetooth documentation中所需的所有内容。
答案 0 :(得分:4)
我认为这是因为启用了SELECT
terminal_name
,DATENAME(MONTH, sales_timestamp) AS Month_Name
,COUNT(nc_deposit) AS piece
,ISNULL( SUM(nc_deposit), 0 ) AS amount
FROM ...
(在项目App Sandbox
中找到)。
启用Capabilities
(在Bluetooth
下),并接受对权利文件的自动更改解决了问题。
同样禁用Hardware
似乎也有效,但是我不知道这是否安全。
作为参考,我的权利文件现在如下所示:
App Sandbox