2016-10-18 32 views
0

当前正在使用需要countinues进行外围设备后台扫描的应用程序。我们需要在初始化外围设备扫描的同时允许复制密钥。当应用程序在后台或手机处于锁定状态时,iOS BLE外围设备扫描

我已经写了一个样本应用程序用于实验。我已经在我的应用程序中启用了有限状态运行的后台功能。我发现当应用程序是后台时,discover discover外围委托方法中的点击次数非常少。手机处于锁定状态时更少。对于相同的应用程序状态,不同时间的点击次数也会有所不同。我们还注意到当手机处于锁定屏幕或应用程序处于后台时启动连接时出现问题。

这是预期的行为?我错过了什么吗?

任何帮助表示赞赏。

回答

0

文档说:

当你的iOS应用程序在后台或处于暂停状态,其蓝牙 相关的能力受到影响。 [...]即使您声明了一种或两种[后台执行模式,某些蓝牙任务在您的应用程序处于后台时的操作方式会有所不同。您在设计应用时需要考虑到这些差异。

即使支持后台处理的应用程序也可能随时被系统终止以释放当前前台应用程序的内存。从iOS 7开始,Core Bluetooth支持保存中央和外围管理器对象的状态信息,并在应用程序启动时恢复该状态。您可以使用此功能来支持涉及蓝牙设备的长期操作。 - Source

如果所扫描的外围设备的所有应用都在后台进行,时间间隔,以广告包增加您的中心设备扫描。因此,发现广告外设可能需要更长的时间。 - Source

您的应用能够在plist中宣布,当它何时扫描在后台,但有限的功耗/性能,以节省电池,并且可以潜在地被系统杀死。

不确定,但我认为连接是不可能的,当手机被锁定。您只能恢复以前的连接。

还有更多关于背景蓝牙操作的信息in here

+0

我想知道我们如何才能实施国家恢复。在willrestorestate委托方法中,我总是得到零的字典[CBCentralManagerRestoredStatePeripheralsKey]。在初始化中心时使用恢复密钥 – user2854325

+0

初始化中心时是否设置了“CBCentralManagerOptionRestoreIdentifierKey”? – Crazyrems

+0

这是定义恢复键的正确方法:NSString * CBCentralManagerRestoredStatePeripheralsKey = @“somestring”; – user2854325

相关问题