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

时间:2015-10-30 12:13:54

标签: ios swift bluetooth bluetooth-lowenergy core-bluetooth

在我的项目中,我成功连接到蓝牙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外围设备并重新连接它的最佳做法是什么。我做错了吗?

1 个答案:

答案 0 :(得分:4)

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

Apple Documentation

重新连接到外围设备

  

使用Core Bluetooth框架,有三种方法可以   重新连接到外围设备。你可以:

     
      
  1. 使用
    检索过去发现或连接的已知外围设备 - 外围设备列表   retrievePeripheralsWithIdentifiers:方法。如果外围你是   寻找是在列表中,尝试连接到它。这种重新连接
      “检索已知外围设备列表”中描述了选项。
  2.   
  3. 使用retrieveConnectedPeripheralsWithServices:检索当前连接到系统的外围设备列表   方法。如果您要查找的外围设备位于列表中,请连接
      它本地到您的应用程序。这种重新连接选项在中描述   检索连接外围设备列表。
  4.   
  5. 使用以下方法扫描并发现外围设备   scanForPeripheralsWithServices:options:方法。如果你找到了,   连接到它。这些步骤在Discovering Peripheral中有所描述   广告和连接到外围设备的设备   在你发现它之后。
  6.