CBCentralManager状态始终处于关闭状态

时间:2014-11-05 18:11:14

标签: swift osx-mavericks core-bluetooth

当我运行我的代码,并打开/关闭MacbookPro上的蓝牙时,状态始终为4,这对应于PoweredOff状态。

import Cocoa
import CoreBluetooth

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, CBCentralManagerDelegate {

    var centralManager = CBCentralManager()

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        centralManager = CBCentralManager(delegate: self, queue: nil)
    }

    func centralManagerDidUpdateState(central: CBCentralManager!) {

        switch central.state {

            case .PoweredOn:
                println(".PoweredOn")

            case .PoweredOff:
                println(".PoweredOff")

            case .Resetting:
                println(".Resetting")

            case .Unauthorized:
                println(".Unauthorized")

            case .Unknown:
                println(".Unknown")

            case .Unsupported:
                println(".Unsupported")
        }
    }
}

我知道蓝牙实际上是开启的,因为我已经能够将它与我的手机配对。

1 个答案:

答案 0 :(得分:3)

回答我自己的问题......

事实证明CoreBluetooth仅适用于蓝牙4.0:

  

核心蓝牙框架是蓝牙4.0规范(source)

的抽象

要找出你的mac有什么蓝牙规格:

 > About This Mac > More Info... > System Report... > Hardware > Bluetooth

寻找LMP Version

0x4 = Bluetooth Core Specification 2.1 + EDR
0x6 = Bluetooth Core Specification 4.0

我有LMP版本4,所以我猜CoreBluetooth对我不起作用。

有趣的是,switch语句并没有给我.Unsupported的情况。


编辑:
在使用蓝牙4的较新Mac上测试完全相同的代码后,状态变为.PoweredOn