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

sor*_*dam 5 ios core-bluetooth bluetooth-lowenergy

我有一个蓝牙设备,上面有一个按钮.单击设备的按钮时,通知特性更新和我的应用程序显示本地通知.就这么简单.

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

   var restoreOptions = [CBPeripheralManagerOptionRestoreIdentifierKey: "customIdentifier"]
   centralManager.connect(peripheral, options: restoreOptions)
Run Code Online (Sandbox Code Playgroud)

然后设置通知特征值为true:

   peripheral.setNotifyValue(true, for: notificationCharacteristic)
Run Code Online (Sandbox Code Playgroud)

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

   func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
       showLocalNotification()
   }
Run Code Online (Sandbox Code Playgroud)

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

Neo*_*Neo 0

您需要启用并编程您的应用程序以处理核心蓝牙后台模式

\n\n

这样,如果您的应用程序被操作系统终止以释放一些资源,您将能够重新连接到设备。

\n\n

“即使您的应用程序支持一种或两种核心蓝牙后台执行模式,它也不能永远运行\xe2\x80\x99。在某些时候,系统可能需要终止您的应用程序以释放当前前台应用程序的内存\例如,xe2\x80\x94 导致任何活动或挂起的连接丢失。从 iOS 7 开始,核心蓝牙支持保存中央和外围管理器对象的状态信息,并在应用程序启动时恢复该状态。您可以使用此功能来支持涉及蓝牙设备的长期行动”

\n\n

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

\n