问题描述
应用被用户杀死后,是否有办法在ibeacon唤醒后恢复以前的BLE连接?
在我的iPhone应用程序中,我可以设法在用户杀死应用程序之后使用iBeacon唤醒该应用程序。我可以在唤醒期间触发本地通知,但是当涉及到BLE相关任务时,根本没有任何响应。没有扫描回调就没有连接回调。
编辑:
- 已启用BLE背景。
- 它将扫描带有以前与iPhone绑定的标识符的外围设备。标识符存储在Userdefaults中。
- 对于挂起的连接,当应用程序被终止时,它将调用断开回调。我猜没有挂起的连接。
- 我尚未配置BLE状态恢复。
解决方法
感谢Paulw11和Prakash Shaiva
在线浏览更多文档后,这里是答案:
就我而言,我想在被用户杀死后唤醒该应用程序。并与先前绑定的BLE设备建立连接。
我学习的第一件事
当ibeacon唤醒iOS App时,它将不会调用willRestoreState
回调。换句话说,App无法从状态恢复支持中恢复连接。但是我们可以尝试建立新的连接。\
willRestoreState
回调电话。
Conditions for Bluetooth State Restoration to relaunch your app
See answer from Apple
我学到的第二件事
为了在唤醒期间建立新的连接,需要将您所插入的一组服务UUID添加到func scanForPeripherals(withServices serviceUUIDs: [CBUUID]?,options: [String : Any]? = nil)
中,否则iOS本身将停止随机扫描。