应用程序被用户杀死后,是否有办法在ibeacon唤醒后恢复以前的BLE连接?
在我的iPhone应用程序中,我可以在应用程序被用户杀死后使用iBeacon唤醒该应用程序。我可以在唤醒期间触发本地通知,但当涉及到与BLE相关的任务时,根本没有响应。没有扫描回调没有连接回调。
编辑:
- BLE背景已启用
- 它会扫描带有先前与iPhone绑定的标识符的外围设备。标识符存储在Userdefaults中
- 对于挂起的连接,当应用程序被终止时,它将调用断开连接回调。我想没有挂起的连接
- 我还没有配置BLE状态恢复
感谢Paulw11和Prakash Shaiva
在网上浏览了更多文档后,以下是答案:
就我而言,我想在被用户杀死后唤醒应用程序。并与之前绑定的BLE设备建立连接。
我学到的第一件事
当iOS应用程序被ibeacon唤醒时,它不会调用willRestoreState
回调。换句话说,应用程序无法从状态恢复支持恢复连接。但我们可以尝试建立新的连接
当您的应用程序被iOS系统终止时,willRestoreState
回调调用。
蓝牙状态恢复重新启动应用程序的条件
请参阅Apple 的答案
我学到的第二件事
为了在唤醒期间建立新的连接,需要将您所在的服务UUID阵列添加到func scanForPeripherals(withServices serviceUUIDs: [CBUUID]?, options: [String : Any]? = nil)
中,否则iOS本身将停止随机扫描。