我对 iOS 上的蓝牙生命周期有疑问。
我们正在使用 React Native 和以下库 ( https://github.com/innoveit/react-native-ble-manager ) 来管理我们的蓝牙设备。
设备通过蓝牙发送所有数据后发送数据并清除其本地数据(我们仅使用 ble 消息 ACK,没有内部应用程序 ACK)。
问题是,当应用程序被终止时,iOS 似乎保持 ble 打开,这使得设备认为它仍在发送由我们的应用程序正确处理的数据,并在最后清除它(这导致数据丢失)。
这是 iOS 上的正常行为吗? (事实上,在应用程序被终止后,ble 保持打开状态一段时间,并且没有通过 ble 发送错误?)
有没有办法在应用程序被终止时强制关闭 ble?
谢谢
最佳答案
Is this a normal behaviour on iOS ? (the fact that the ble stays open for some time after the app is killed, and no errors are sent through ble ?)
是的,这是正常的。操作系统保持打开连接并与应用程序共享。这些应用程序不直接保持连接。在最后一个应用程序释放连接后,操作系统可能需要一些时间(通常是几秒,但有时会更长一些)才能断开连接。
Is there a way to force close the ble when the app is killed ?
没有。当应用程序被终止时,无法执行任何操作(我假设您强制退出,例如通过向上滑动应用程序切换器)。
综上所述,我有点惊讶的是,如果应用程序不再读取,您会收到返回设备的写入响应。当你说“ble messages ACK”时,你具体指的是哪个“ack”?您收到写响应数据包了吗?或者你的意思是较低级别的确认?关于react-native - 使用 native react 杀死应用程序后,蓝牙仍然处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72867798/