我有一个使用蓝牙4.0 LE的应用程序。该应用程序允许设备充当中央和外围设备。
我希望应用程序在后台运行。我已经在info.plist中包含了带有“bluetooth-central”和“bluetooth-peripheral”的UIBackgroundModes。
我在两台启用了蓝牙4.0 LE的设备上运行该应用程序。
当两个设备都在前台运行时,一切都运行良好,信息双向传递。
当一台设备在前台运行而另一台设备在后台运行时,在后台运行的设备可以扫描和通告,但无法发现在后台运行的其他设备。在前台运行的设备能够发现并连接到后台运行的设备。
通过Apple's Core Bluetooth Programming Guide阅读后,我知道可以连接到另一台设备并以两种方式共享信息。
我可以根据要求发布更多信息。谢谢。
答案 0 :(得分:8)
当外围设备应用程序背景时,广告服务将被推送到“溢出区域”,并且根本不会公布外围设备名称。另外,提高了广告间隔。理论上,iOS BLE堆栈应该处理这种情况并请求溢出区域数据,但它不会这样做。同时,后台中央上的扫描速度也会降低,此外还需要特定的服务UUID才能工作。 (您无法在后台使用nil
服务进行扫描)
因此,扫描背景中央的背景设备是不可能的。
这是一个错误或功能,只有Apple知道。打开雷达告诉他们你的问题。我们做得越多,就越有可能得到回应。