当BLE断开时,IOS CoreBluetooth:应用程序在后台运行

我试图在BLE断开连接的时候在后台运行我的应用程序,但是系统会在一段时间后终止应用程序。所以我读了苹果的文档 – “核心蓝牙编程指南”。最后我在“核心蓝牙后台处理的iOS应用程序“。

“在后台执行长期行动

某些应用程序可能需要使用Core Bluetooth框架在后台执行长期操作。 例如,假设您正在开发一款iOS设备的家庭安全应用程序,该应用程序与门锁(配备蓝牙低功耗技术)进行通信。 应用程序和锁相互作用,当用户离开家时自动锁住门,当用户返回时将其解锁 – 当应用程序在后台时。 当用户离开家时,iOS设备可能最终超出锁的范围,导致与锁的连接丢失。 此时,应用程序可以简单地调用CBCentralManager类的connectPeripheral:options:方法,并且因为连接请求不超时,所以iOS设备将在用户返回时重新连接。 现在想象一下用户离家几天。 如果应用程序在用户离开时被系统终止,则当用户返回家时应用程序将不能重新连接到锁,并且用户可能无法解锁门。 对于像这样的应用程序,能够继续使用Core蓝牙执行长期操作(例如监控活动和挂起的连接)至关重要。

从这一段我们知道,“监控活动和挂起的连接can solve the problem但我找不到任何方式来实现monitoring active and pending connections

核心蓝牙框架参考

如何实现在BLE断开连接时让我的应用程序在后台运行?

有人有什么主意吗 ?

如果您使用蓝牙中央后台执行模式注册您的应用程序,那么您的应用程序将在未运行时被触发,并将获取用于处理发现和连接的centralManager:didDiscoverPeripheral方法,例如centralManager:didDiscoverPeripheral ,您可以从中调用connectPeripheral:options:

确实,系统可能会在后台closures应用程序,但会重新启动这些事件。

系统不会重新启动您的应用程序进行后台BLE执行的唯一时间是用户强制杀死了之前启动的应用程序。 系统会记住这一点,直到用户第一次手动重新启动时才会重新启动应用程序。