我想在我的应用程序及其小部件中以中央模式与我的外围设备保持持久的 BLE 连接。那么技术上可行吗?
原因如下:在应用程序中建立连接后,我们将其发送到后台,然后打开 today-widget - 小部件应继续与连接的外围设备一起运行。反之亦然:如果我们隐藏今天的小部件,启动应用程序 - 该应用程序应继续使用现有连接。
最佳答案
是的,如果您在后台启用蓝牙功能,您可以继续在后台处理 BLE 事件。只需选择您的主项目文件,然后选择目标,然后在“功能”选项卡上,打开“背景模式”并启用“使用蓝牙 LE 配件”。
在您的主应用中,您将有机会处理任何 BLE 事件,即使应用在后台也是如此。
需要注意的是 BLE 事件启动操作,因此请务必将要在后台执行的代码放在委托(delegate)方法中,例如 didUpdateValueForCharacteristic
。
您的代码将在您初始化 CBCentralManager
时指定的任何队列上执行。
小部件和应用程序不能共享 BLE 连接。您可以使用 Apple 建议的方法(NSUserDefaults 或键值观察)在应用程序和小部件之间进行通信,或者,您可以从小部件创建另一个 BLE 连接并通过它进行通信。
关于iOS 核心蓝牙 : active connection to the same target peripheral in app and widget simultaneously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626816/