我有一个蓝牙设备,上面有一个按钮。点击设备按钮后,通知特性更新和我的应用会显示本地通知。就这么简单。
我在前台连接蓝牙设备如下:
var restoreOptions = [CBPeripheralManagerOptionRestoreIdentifierKey: "customIdentifier"]
centralManager.connect(peripheral, options: restoreOptions)
然后设置的通知特征值为true:
peripheral.setNotifyValue(true, for: notificationCharacteristic)
当通知特征更新时,应用程序显示本地通知:
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
showLocalNotification()
}
当通知特征发生变化时,会触发didUpdateValueFor并显示本地通知。前景和背景没有问题。但是当用户终止应用程序时,蓝牙设备断开连接并且didUpdateValue为未触发。当特征改变甚至app被用户终止时我想重新连接蓝牙设备。我怎样才能做到这一点 ?我希望我能告诉你我的问题。谢谢。
答案 0 :(得分:0)
您需要启用App并对其进行编程以处理Core-Bluetooth Background Mode
通过这种方式,如果您的应用程序被操作系统杀死以释放一些资源,您将能够重新连接到设备。"即使您的应用支持一种或两种核心蓝牙后台执行模式,它也无法永久运行。在某些时候,系统可能需要终止您的应用程序以释放当前前台应用程序的内存 - 例如,导致任何活动或挂起的连接丢失。从iOS 7开始,Core Bluetooth支持保存中央和外围管理器对象的状态信息,并在应用程序启动时恢复该状态。您可以使用此功能来支持涉及蓝牙设备的长期操作"
但如果用户已终止您的应用,则无法重新连接。