在iOS9下,BLE无法在后台工作

时间:2017-10-20 04:38:59

标签: swift background bluetooth-lowenergy ios9 appdelegate

我是Stack Overflow的长期潜伏者,今天就加入了一个解决问题的解决方案,这个问题困扰了我好几个星期,我没有在其他任何地方见过这个解决方案。也许别人会得到帮助。

我们有一个用Swift编写的iOS应用程序,它使用供应商提供的SDK与特定的BLE设备进行通信。问题是iOS会在应用程序进入后台时暂停应用而不是让它继续运行,但只会在iOS9下执行此操作。在iOS10& 11,一切都在后台运作良好。

起初我认为供应商需要调整他们的SDK代码,但他们的示例应用程序在iOS9的后台运行良好。

切入追逐:我们的应用程序在AppDelegate中实例化BLE工作者类,因为它需要独立于屏幕上当前显示的任何视图运行。最后我意识到我们的应用程序和供应商的示例应用程序之间的最大区别在于它们在视图控制器类中实例化了BLE扫描等。

我修改了代码以从第一个视图控制器的viewDidLoad事件中实例化BLE工作者对象,然后在AppDelegate中设置对它的引用。这就是诀窍。我猜测iOS9需要将BLE代码绑定到主UI处理线程,而不是AppDelegate,以便知道允许应用继续在后台运行。

因此,如果您需要在应用程序背景化时与BLE设备通信,并且后台处理仅对iOS9设备不起作用,请确保从View Controller类中实例化BLE通信。

0 个答案:

没有答案