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存储到数组中才可以扫描到此设备。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容