2014-11-05 2 views
3

Когда я запускаю свой код и включаю/выключаю bluetooth на моем MacbookPro, состояние всегда 4, что соответствует состоянию PoweredOff.Состояние CBCentralManager всегда выключено

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") 
     } 
    } 
} 

Я знаю, что Bluetooth на самом деле включен, потому что я смог связать его с телефоном.

ответ

3

Отвечая на мой собственный вопрос ...

Оказывается, что CoreBluetooth только для Bluetooth 4.0:

Структура Ядро Bluetooth является абстракцией 4.0 спецификации Bluetooth (source)

Чтобы узнать, какая спецификация Bluetooth у вашего 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.


Edit:
После тестирования тот же код на более новый макинтош с Bluetooth 4, состояние стало .PoweredOn.

+0

Если вы не получили неподдерживаемое состояние на своей машине, это скорее всего ошибка. – allprog