我注意到当你断开某个应用程序中的蓝牙设备时,iOS设备将继续保持该连接大约10秒钟。我试图通过写一个特性导致蓝牙模块取消与iOS设备的连接,但这不起作用(主要是因为我更改了模块而iOS没有看到更改,因此试图解决这个问题)我假设设备被缓存在某个地方)。有没有办法让它在代码中立即断开?我正在使用swift命令
目前manager.cancelPeripheralConnection(peripheral)
。
答案 0 :(得分:2)
不幸的是,没有。告诉系统断开外围设备的唯一方法是使用您已经使用的cancelPeripheralConnection
方法。然而,如果你称这种方法,它并不一定意味着外围设备将断开连接。
<强>背景强>
在iOS上,整个BLE连接管理由操作系统维护。这意味着没有单一的应用程序拥有&#34;一个连接。所有BLE功能都经过多路复用,允许多个应用程序访问中央和外围设备。
例如,如果您已经安装了一个健身应用程序,可以在后台跟踪心率传感器的数据,那么您也可以连接&#34;应用程序中的心率传感器,但只要健身应用程序保持连接,您将无法触发真正的断开连接。
您注意到的断开延迟基本上是对操作系统的优化。如果没有应用程序保持与外围设备的连接,它将等待一段时间(以避免不必要的连接/断开连接),然后触发蓝牙芯片上的断开连接。
希望有所帮助。