在Core Bluetooth中断开连接后,如何重新连接设备?

在Core Bluetooth中,连接到设备后,我closures设备并断开设备连接。 但是当我再次打开设备时,没有didDiscoverPeripheral调用didDiscoverPeripheral 。 我怎样才能重新连接到设备?

使用cancelPeripheralConnection断开设备时,将调用didDisconnectPeripheral委托方法。 但是从iOS 6.0开始,设备保持连接大约40-50秒(或更多),所以在该时间段内不会调用didDiscoverPeripheral 。 如果您想再次“发现”,只需调用retrieveConnectedPeripherals方法即可获得didRetrieveConnectedPeripherals的参考。

但是,最好的解决scheme是保存设备的UUID并使用它重新连接retrievePeripherals方法。 这将调用didRetrievePeripherals ,你可以重新连接connectPeripheral 。 这是重新连接设备的最快方式,在这种情况下不需要扫描。

当您使用scanForPeripheralsWithServices进行扫描时,通常只会通知您一次特定的设备地址。 您可以通过指定选项CBCentralManagerScanOptionAllowDuplicatesKey将其更改为报告重复项。 或者您可以让您的应用程序检测到其他设备使用超时断开连接,然后重新启动扫描。

在CoreBluetooth中,所有pipe理都是由应用层完成的。 在你的情况下,我会做什么是监听断开事件比在同一事件,重新连接外设。 连接方法是一个便宜的方法,并确保您重新连接到您的设备,当它在范围内。

请注意,如果您明确断开设备连接,则会收到相同的断开连接事件,但您不必调用重新连接方法。