iOS BLE 的断开时间

Uba*_*ade 1 ios bluetooth-lowenergy swift

我注意到,当您在应用程序中断开蓝牙设备的连接时,iOS 设备将继续保持该连接约 10 秒钟。我试图通过写入一个特性来解决这个问题,该特性导致蓝牙模块取消与 iOS 设备的连接,但这不起作用(主要是因为我更改了模块而 iOS 没有看到更改,因为我假设该设备缓存在某处)。有没有办法让它在代码中立即断开连接?我manager.cancelPeripheralConnection(peripheral)目前正在使用 swift 命令 。

Jen*_*der 5

不幸的是,没有。告诉系统断开外围设备的唯一方法是通过cancelPeripheralConnection您已经使用的方法。但是,如果您调用此方法,并不一定意味着外围设备将断开连接。

背景

在 iOS 上,整个 BLE 连接管理由操作系统维护。这意味着没有一个应用程序“拥有”一个连接。所有 BLE 功能都经过复用,以允许多个应用程序访问中央和外设。

例如,如果您安装了一个健身应用程序,在后台跟踪来自您的心率传感器的数据,那么您也可以在您的应用程序中“连接”到心率传感器,但您将无法触发真正的断开连接,只要健身应用保持连接。

您注意到的断开延迟基本上是对操作系统的优化。如果没有应用程序再保持与外围设备的连接,它将等待一段时间(以避免不必要的连接/断开循环),然后触发蓝牙芯片上的断开连接。

希望有帮助。