我正在尝试在BLE断开连接的情况下在后台运行我的应用程序。但系统会在一段时间后终止应用程序。所以我读了苹果公司的文档 - “核心蓝牙编程指南”。最后一篇我在“iOS应用程序的核心蓝牙背景处理”中找到了以下段落。
“在后台执行长期行动
某些应用可能需要 使用Core Bluetooth框架来执行长期操作 背景。举个例子,假设你正在开发一个家庭安全 适用于与门锁通信的iOS设备的应用程序(配备蓝牙低功耗技术)。当用户离开家时,应用程序和锁相互作用以自动锁定门,当应用程序在后台时,当用户返回时解锁门。当用户离开家时,iOS设备最终可能会超出锁定范围,从而导致与锁定的连接丢失。此时,应用程序可以简单地调用CBCentralManager类的connectPeripheral:options:方法,并且由于连接请求没有超时,iOS设备将在用户返回主页时重新连接。现在想象一下,用户离开家几天。如果在用户离开时系统终止应用程序,则当用户返回家时,应用程序将无法重新连接到锁定,并且用户可能无法解锁门。对于这样的应用程序,能够继续使用Core Bluetooth执行长期操作(例如监视活动连接和挂起连接)至关重要。“
从这段文字中我们知道“监控活动和待定连接can solve the problem
但我无法找到任何方法来实现monitoring active and pending connections
核心蓝牙框架参考
如何实现在BLE断开连接时让我的应用在后台运行?
有没有人有任何想法?
答案 0 :(得分:6)
如果您使用bluetooth-central Background Execution Mode注册您的应用,那么您的应用会在未运行时启动,并会获得处理发现和连接所需的代理方法,例如{ {3}},您可以从中调用centralManager:didDiscoverPeripheral
。
系统可能会在后台终止您的应用,但会为这些事件重新启动它。
系统赢得重新启动应用以进行后台BLE执行的唯一时间是用户强制在之前的启动时杀死了应用。系统会记住这一点,并且不会再次重新启动应用程序,直到用户第一次手动重新启动它。