在我的项目中,我成功连接到蓝牙LE外设并从该设备准备好CBCharacteristic
值。我正面临一个问题。如果用户愿意,我需要断开外围设备并重新连接设备。
我正在使用以下步骤。
1。对于断开连接:
我在打电话
centralManager?.cancelPeripheralConnection(peripheral)
。此调用成功完成调用委托func centralManager(central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: NSError?)
2。重新连接:我开始扫描外围设备,就像我在应用启动时所做的那样centralManager!.scanForPeripheralsWithServices(nil, options: nil)
但是这个调用永远不会调用代理func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber)
,我尝试连接BLE发现的外围设备。
我的问题是在iOS中断开BLE外围设备并重新连接它的最佳做法是什么。我做错了吗?
答案 0 :(得分:4)
这不是重新连接到BLE的正确方法。
重新连接到外围设备
使用Core Bluetooth框架,有三种方法可以 重新连接到外围设备。你可以:
- 使用
检索过去发现或连接的已知外围设备 - 外围设备列表retrievePeripheralsWithIdentifiers:
方法。如果外围你是 寻找是在列表中,尝试连接到它。这种重新连接
“检索已知外围设备列表”中描述了选项。- 使用
retrieveConnectedPeripheralsWithServices:
检索当前连接到系统的外围设备列表 方法。如果您要查找的外围设备位于列表中,请连接
它本地到您的应用程序。这种重新连接选项在中描述 检索连接外围设备列表。- 使用以下方法扫描并发现外围设备
醇>scanForPeripheralsWithServices:options:
方法。如果你找到了, 连接到它。这些步骤在Discovering Peripheral中有所描述 广告和连接到外围设备的设备 在你发现它之后。