我希望在我的应用程序和小部件中,在中央模式下与外设保持持久的BLE连接,这样技术上可行吗?
原因如下:当在应用程序中建立连接后,我们将其发送到后台,然后打开今天的小部件——该小部件应继续操作连接的外设。反之亦然:如果我们隐藏了今天的小部件,则启动应用程序——应用程序应继续使用现有的连接。
原因如下:当在应用程序中建立连接后,我们将其发送到后台,然后打开今天的小部件——该小部件应继续操作连接的外设。反之亦然:如果我们隐藏了今天的小部件,则启动应用程序——应用程序应继续使用现有的连接。
如果你在后台启用了蓝牙功能,那么你可以继续处理BLE事件。只需选择主项目文件,然后选择目标,在Capabilities选项卡中打开Background Modes并启用“Uses Bluetooth LE accessories”。
在你的主应用程序中,即使应用程序在后台运行,你也有机会处理任何BLE事件。
需要注意的一点是,BLE事件会发起操作,因此请确保将你想要在后台执行的代码放在委托方法内,例如didUpdateValueForCharacteristic
。
在初始化CBCentralManager
时,你可以指定代码将在哪个队列上运行。
小部件和应用程序无法共享BLE连接。你可以使用苹果建议的方法(NSUserDefaults或键值观察)在应用程序和小部件之间进行通信,或者你可以从小部件创建另一个BLE连接,并通过它进行通信。
NSUserDefaults
或键值观察)在应用程序和小部件之间进行通信,或者您可以从小部件创建另一个BLE连接,并通过该连接进行通信。 - Marcus Adams