iOS CoreBluetooth:在应用程序和小部件中同时主动连接到同一目标外围设备?

iOS CoreBluetooth:在应用程序和小部件中同时主动连接到同一目标外围设备?,ios,core-bluetooth,simultaneous,bluetooth-lowenergy,Ios,Core Bluetooth,Simultaneous,Bluetooth Lowenergy,我想在我的应用程序和它的小部件中以中央模式与外围设备保持持久的可扩展连接。那么,从技术上讲,这是可能的吗 原因如下:在应用程序中建立连接后,我们将其发送到后台,然后打开“今日”小部件-小部件应继续使用连接的外围设备运行。反之亦然:如果我们隐藏今日小部件,启动应用程序-应用程序应继续使用现有连接。是的,如果您在后台启用蓝牙功能,您可以继续在后台处理BLE事件。只需选择主项目文件,然后选择目标,然后在“功能”选项卡上,打开背景模式并启用“使用蓝牙LE附件” 在主应用程序中,即使应用程序处于后台,您也

我想在我的应用程序和它的小部件中以中央模式与外围设备保持持久的可扩展连接。那么,从技术上讲,这是可能的吗


原因如下:在应用程序中建立连接后,我们将其发送到后台,然后打开“今日”小部件-小部件应继续使用连接的外围设备运行。反之亦然:如果我们隐藏今日小部件,启动应用程序-应用程序应继续使用现有连接。

是的,如果您在后台启用蓝牙功能,您可以继续在后台处理BLE事件。只需选择主项目文件,然后选择目标,然后在“功能”选项卡上,打开背景模式并启用“使用蓝牙LE附件”

在主应用程序中,即使应用程序处于后台,您也有机会处理任何不可编辑的事件

需要注意的一点是,BLE事件会启动操作,因此请确保将希望在后台执行的代码放在委托方法内,例如
didUpdateValueForCharacteristic

您的代码将在初始化
CBCentralManager
时指定的任何队列上执行


小部件和应用程序无法共享可恢复的连接。您可以使用苹果建议的方法(NSUserDefaults或key value observing)在应用程序和小部件之间进行通信,或者,您可以从小部件创建另一个BLE连接并通过该连接进行通信

是的,这是可能的。看看CBCentralManager

基本上,这种方法的作用是收集整个iOS设备上连接的所有外围设备。在iOS设备上启动第二个应用程序时使用此选项


当应用程序位于后台时,其BLE连接保持活动状态,因此您可以隐藏应用程序1,启动应用程序2,使用此方法识别您感兴趣的外围设备,并独立于第一个应用程序使用它。

Marcus,感谢您的回答。很好的方法,但我的问题有点不同:我们可以在今天的小部件中使用应用程序中建立的BLE连接吗?反之亦然。例:我们启动应用程序,连接BLE,隐藏应用程序,启动小部件并继续连接。请改进您的答案,因为这不是您所要求的。否,小部件和应用程序无法共享连接。您可以使用苹果建议的方法(NSUserDefaults或key value observing)在应用程序和小部件之间进行通信,或者,您可以从小部件创建另一个BLE连接并通过该连接进行通信。Marcus,感谢您的解释和在后台使用BLE的想法。我会试试……所以,在第二个应用程序中,在
检索连接的外围设备SwithServices
之后,我应该连接检索到的外围设备,如参考文献中所述。在这种情况下,第一个应用程序中的现有连接是否保持活动状态?如果是,两个同时连接的数据传输如何执行?是,现有连接保持活动状态。我对性能没有把握。