10

我有一个使用蓝牙 4.0 LE 的应用程序。该应用程序允许设备充当中央和外围设备。

我希望应用程序在后台运行。我已经在 info.plist 中包含了带有“bluetooth-central”和“bluetooth-peripheral”的 UIBackgroundModes。

我在两个启用了蓝牙 4.0 LE 的不同设备上运行该应用程序。

当两个设备都在前台运行时,一切正常,信息双向传递。

当一台设备在前台运行而另一台在后台运行时,运行在后台的设备能够扫描和通告,但无法发现在后台运行的另一台设备。在前台运行的设备能够发现并连接到在后台运行的设备。

在阅读了Apple 的 Core Bluetooth Programming Guide之后,我知道可以通过两种方式连接到另一台设备并共享信息。

我可以根据要求发布更多信息。谢谢你。

4

1 回答 1

8

外设应用程序后台运行时,广告服务被推送到“溢出区域”,并且外设名称根本不被广告。此外,提高了广告间隔。理论上,iOS BLE 堆栈应该处理这种情况并请求溢出区域数据,但它不这样做。同时,后台中心的扫描速度也变慢了,另外它需要特定的服务 UUID 才能工作。(您不能在后台使用nil服务进行扫描)

因此,不可能在后台中心扫描后台设备

这是错误还是功能,只有 Apple 知道。打开雷达,告诉他们你的问题。我们这样做的越多,我们得到回应的机会就越大。

于 2013-08-24T21:53:13.090 回答