在IOS 9.1 / Xcode 7.1.1中断了蓝牙
在10.11.1下使用Xcode 7.1.1运行IOS 9.1。 Cut'n'Pasted这个代码从这个教程; 并再次检查与其他几个来源/网站。
http://hatemfaheem.blogspot.ch/2014/12/how-would-you-scan-for-nearby-ble.html
这是我的代码…
import Foundation import CoreBluetooth class BLEManager { var centralManager : CBCentralManager! var bleHandler : BLEHandler // delegate init() { self.bleHandler = BLEHandler() self.centralManager = CBCentralManager(delegate: self.bleHandler, queue: nil) } } class BLEHandler : NSObject, CBCentralManagerDelegate { override init() { super.init() } func centralManagerDidUpdateState(central: CBCentralManager) { switch (central.state) { case .Unsupported: print("BLE is unsupported") case .Unauthorized: print("BLE is unauthorized") case .Unknown: print("BLE is unknown") case .Resetting: print("BLE is reseting") case .PoweredOff: print("BLE is powered off") case .PoweredOn: print("BLE is powered on") central.scanForPeripheralsWithServices(nil, options: nil) default: print("BLE default") } } func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) { print("didConnectPeripheral") } func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, adverismentData: [NSObject : AnyObject]!, RSSI: NSNumber!) { print("\(peripheral.name) : \(RSSI) dBm") } }
我使用这个代码在视图控制器中调用
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var bleManager: BLEManager! bleManager = BLEManager() }
现在我运行它与9.1 Air的iPad Air,并插入并拔出并重新插入一个ibeacon,但没有出现在控制台上,表明它根本不工作。 现在我知道ibeacon正在工作。 因为我使用Radius Networks的ScanBeacon工具find它。
好的,我明白ibeacons和Core蓝牙并没有很好的结合在一起,但是确实应该调用发现的外设呢? 还是我错过了我的代码中的关键线?
你的BLEManager
超出了范围,并在viewDidLoad
结束时被释放。 使它成为一个成员variables,给它一个更长,更有用的一生:
var bleManager = BLEManager() override func viewDidLoad() { // etc }