取消BLE外围设备连接后无法重新连接iOS

Sau*_*lui 4 bluetooth ios core-bluetooth bluetooth-lowenergy swift

在我的项目中,我成功地连接到了蓝牙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发现的外围设备的委托。

我的问题是断开BLE外设并在iOS中重新连接的最佳实践是什么。我做错什么了吗?

Abh*_*nav 5

那不是重新连接到BLE的正确方法。

根据Apple文档

重新连接外围设备

使用Core Bluetooth框架,可以通过三种方式重新连接到外围设备。您可以:

  1. 使用该
    retrievePeripheralsWithIdentifiers:方法检索已知外围设备的列表,这些外围设备是您过去发现或连接的外围设备。如果您要查找的外围设备在列表中,请尝试连接到该外围设备。
    检索已知外围设备列表中介绍了此重新连接选项。
  2. 使用该retrieveConnectedPeripheralsWithServices: 方法检索当前连接到系统的外围设备的列表。如果您要查找的外围设备在列表中,请
    在本地将其连接到您的应用程序。
    检索连接的外围设备列表中介绍了此重新连接选项。
  3. 使用该scanForPeripheralsWithServices:options:方法扫描并发现外围设备 。如果找到它,请连接到它。发现外围设备后,将发现这些设备并做广告并连接到外围设备,其中介绍了这些步骤。