iOS CoreBluetooth:同时与app和widget中的同一目标外设有效连接?

时间:2016-02-25 12:05:52

标签: ios core-bluetooth simultaneous bluetooth-lowenergy

我希望在我的应用程序及其小部件中以中央模式与我的外围设备保持持久的BLE连接。技术上可能吗?

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

2 个答案:

答案 0 :(得分:2)

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

在您的主应用程序中,您将有机会处理任何BLE事件,即使应用程序在后台也是如此。

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

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

小部件和应用无法共享BLE连接。您可以使用Apple建议的方法(NSUserDefaults或键值观察)在应用程序和窗口小部件之间进行通信,或者,您可以从窗口小部件创建另一个BLE连接并通过它进行通信。

答案 1 :(得分:1)

是的,这是可能的。请查看CBCentralManager上的retrieveConnectedPeripheralsWithServices:

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

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