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

标签 ios bluetooth-lowenergy core-bluetooth

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

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

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

则设置的通知特征值为真:

   peripheral.setNotifyValue(true, for: notificationCharacteristic)

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

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

当通知特性为 change 时,会触发 didUpdateValueFor 并显示本地通知。前景和背景都没有问题。但是当用户终止应用程序时,蓝牙设备会断开连接并且不会触发 didUpdateValueFor。当用户终止应用程序的特性更改时,我想再次重新连接蓝牙设备。我怎样才能做到这一点 ?我希望我能告诉你我的问题。谢谢。

最佳答案

您需要启用和编程您的应用程序来处理 Core-Bluetooth Background Mode

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

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

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

关于ios - 当用户终止应用程序时重新连接蓝牙设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47813624/

相关文章:

ios - 如何在 bundle 目录iOS中读取 "a b.txt"

ios - cordova cordova-plugin-statusbar StatusBarOverlaysWebView 不工作

ios - 需要建议在 iOS 开发中集成 Gmail 帐户

swift - 扫描 BLE 设备并将它们呈现在 UITableView 中

ios - 一台设备的 CBCentral 和 CBPeripheral 标识符是否相同

iphone - 2 台 iOS 设备之间的蓝牙连接

ios - Swift 字符串编码

ios - 写 CBCharacteristic 的问题

android - 低功耗蓝牙设备模拟器/仿真器

iOS确定CBCharacteristic的数据长度