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 状态总是关闭的主要内容,如果未能解决你的问题,请参考以下文章
ios- cbcentralManager 状态未知且 CoreBluetooth[WARNING] <CBConcreteCentralManager> 未通电
xamarin ios 应用程序因 CBCentralManager 崩溃