CBCentralManager 状态总是关闭

Posted

技术标签:

【中文标题】CBCentralManager 状态总是关闭【英文标题】:CBCentralManager state is always off 【发布时间】:2014-11-05 18:11:14 【问题描述】:

当我运行我的代码并在我的 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】:

回答我自己的问题...

原来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

【讨论】:

如果您的机器上没有得到不受支持的状态,那么这很可能是一个错误。

以上是关于CBCentralManager 状态总是关闭的主要内容,如果未能解决你的问题,请参考以下文章

macOS CBCentralManager状态不受支持

ios- cbcentralManager 状态未知且 CoreBluetooth[WARNING] <CBConcreteCentralManager> 未通电

xamarin ios 应用程序因 CBCentralManager 崩溃

类似于 SQLite 或 SQL CE 的便携式 OLAP 数据库 [关闭]

多个 CBCentralManager 实例?

如何将 Jira 与 GitLab CE 集成?