ios BLE 蓝牙4.0 swift开发防坑

一、无法扫描到蓝牙,但其他APP如LightBlue能搜到

1、方法

func central.scanForPeripherals(withServices: nil, options: nil)

要写在

func centralManagerDidUpdateState(_ central: CBCentralManager)

中的

 case .poweredOn:

下,不能写在其他地方。
2、扫描到设备的代理方法改变了,swift2.0的代理方法是

func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber)

现在swift3.0的代理方法是

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) 

如果不把方法改过来,就始终不能获取到扫描到设备的代理。

二、能扫描到设备,无法连接设备

可以扫描到蓝牙设备,能够走上面的didDiscover代理,但是当我连接到指定的蓝牙设备的时候central.connect(peripheral, options: nil),却始终无法连接,蓝牙连接成功和失败的接口都没有回调。
解决方法:

peripherals.append(peripheral)

定义一个数组,把CBPeripheral存储到数组中才可以扫描到此设备。

你可能感兴趣的:(ios BLE 蓝牙4.0 swift开发防坑)