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

coc*_*ode 2 bluetooth ios core-bluetooth

我试图在BLE断开连接的情况下在后台运行我的应用程序.但系统会在一段时间后杀死应用程序.所以我读了苹果的文档 - "核心蓝牙编程指南".最后我发现以下段落在"适用于iOS应用的核心蓝牙背景处理".

"在后台执行长期行动

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

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

核心蓝牙框架参考

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

有谁有想法吗 ?

Mar*_*ams 6

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

确实,系统可能会在后台终止你的应用程序,但它会为这些事件重新启动它.

系统不会重新启动应用程序进行后台BLE执行的唯一时间是用户强制在上次启动时杀死应用程序.系统将记住这一点,并且不会再次重新启动应用程序,直到用户第一次手动重新启动它.

  • 只有在用户没有手动关闭应用程序(通过双击主页按钮并将其滑出)的情况​​下,系统才会重新启动应用程序。在这种情况下,系统不会重新启动您的应用程序,从而有机会重新连接(因为系统假定用户不希望在这种情况下运行此应用程序)。 (2认同)