应用程序终止时重新连接蓝牙设备

我有一个蓝牙设备上有一个button。 当点击设备的button,通知特性更新和我的应用程序显示本地通知。 就这么简单。

我在前台连接蓝牙设备如下:

var restoreOptions = [CBPeripheralManagerOptionRestoreIdentifierKey: "customIdentifier"] centralManager.connect(peripheral, options: restoreOptions) 

然后设置通知特征值是否为真:

  peripheral.setNotifyValue(true, for: notificationCharacteristic) 

当通知特征更新时,应用程序显示本地通知:

  func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { showLocalNotification() } 

当通知特征发生变化时,触发didUpdateValueFor并显示本地通知。 前景和背景没有问题。 但是当应用程序被用户终止时,蓝牙设备被断开并且didUpdateValueFor不被触发。 即使应用终止,我想要重新连接蓝牙设备。 我怎样才能做到这一点 ? 我希望我能告诉你我的问题。 谢谢。

您需要启用和编程您的应用程序来处理核心蓝牙背景模式

这样你就可以重新连接到设备,如果你的应用程序被操作系统杀死,以释放一些资源。

“即使你的应用程序支持一种或两种核心蓝牙后台执行模式,它也不能永远运行。在某些情况下,系统可能需要终止你的应用程序以释放当前前台应用程序的内存 – 导致任何活动的或例如,iOS 7中,核心蓝牙支持保存中央和外围pipe理器对象的状态信息,并在应用程序启动时恢复该状态,您可以使用此function支持涉及蓝牙设备的长期操作“

但如果用户已经终止您的应用程序,则无法重新连接。