Ios 断开核心蓝牙连接后,如何重新连接到设备

Ios 断开核心蓝牙连接后,如何重新连接到设备,ios,bluetooth,core-bluetooth,Ios,Bluetooth,Core Bluetooth,在Core Bluetooth中,连接到设备后,我关闭设备,设备断开连接。但是当我再次打开设备时,没有再次调用didiscoverperipheral。如何重新连接到设备?当您使用scanForPeripheralsWithServices进行扫描时,它通常只会针对特定的设备地址通知您一次。通过指定选项CBCentralManagerScanOptionAllowDuplicatesKey,可以将此更改为报告重复项。或者,你可以让你的应用程序检测到另一个设备使用超时断开连接,然后重新启动扫描。当

在Core Bluetooth中,连接到设备后,我关闭设备,设备断开连接。但是当我再次打开设备时,没有再次调用
didiscoverperipheral
。如何重新连接到设备?

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

当你使用
取消外围设备连接
断开设备连接时,将调用
DidDisconnect外围设备
委托方法。但是,从iOS 6.0开始,设备保持连接的时间约为40-50秒(或更长),因此在该时间段内不会调用
DidDiscoveryPeripheral
。如果您想再次“发现”它,只需调用
retrieveConnectedPeripherals
方法,您将在
didreeveconnectedperipherals
中获得引用


但是,最好的解决方案是保存设备的UUID,并使用该UUID重新连接
retrievePeripherals
方法。这将调用
didRetrievePeripherals
,您可以重新连接
connectperipherals
。这是重新连接到设备的最快方式,在这种情况下无需扫描。

在CoreBlutooth中,所有管理都由应用层完成。 在您的情况下,我要做的是监听断开连接事件,而不是在同一事件中,重新连接外围设备。 连接方法是一种便宜的方法,可以确保在设备返回范围时重新连接到设备


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

@Andras为我提供了正确的路径,但自iOS7以来,他的答案不再完整

重新连接到以前的设备的最佳方法是使用
检索外围设备(带标识符:)
方法

此方法不调用委托,而是直接返回与传入参数的
UUID
列表相对应的
外围设备的列表

if let peripheral = self.centralManager.retrievePeripherals(withIdentifiers: [uuid]).first {
    self.peripheral = peripheral // <-- super important
    self.centralManager.connect(peripheral, options: nil)
}
如果let peripheral=self.centralManager.retrievePeripherals(带标识符:[uuid])。首先{

self.peripheral=peripheral//我正在寻找与EAF附件框架相同的方法。是否可能?如果可能,有人可以告诉我“如何操作”?提前感谢……:)如何断开设备与外围设备的连接?