iOS:ibeacon唤醒后恢复BLE连接

问题描述

应用被用户杀死后,是否有办法在ibeacon唤醒后恢复以前的BLE连接?

在我的iPhone应用程序中,我可以设法在用户杀死应用程序之后使用iBeacon唤醒该应用程序。我可以在唤醒期间触发本地通知,但是当涉及到BLE相关任务时,根本没有任何响应。没有扫描回调就没有连接回调。

编辑:

  1. 已启用BLE背景。
  2. 它将扫描带有以前与iPhone绑定的标识符的外围设备。标识符存储在Userdefaults中。
  3. 对于挂起的连接,当应用程序被终止时,它将调用断开回调。我猜没有挂起的连接。
  4. 我尚未配置BLE状态恢复。

解决方法

感谢Paulw11和Prakash Shaiva

在线浏览更多文档后,这里是答案:

就我而言,我想在被用户杀死后唤醒该应用程序。并与先前绑定的BLE设备建立连接。

我学习的第一件事
当ibeacon唤醒iOS App时,它将不会调用willRestoreState回调。换句话说,App无法从状态恢复支持中恢复连接。但是我们可以尝试建立新的连接。\

当您的应用被iOS系统杀死时,

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本身将停止随机扫描。