ios - CoreBluetooth - centralManagers 方法 didDiscoverPeripheral 在 sleep 模式下变得最不频繁到没有

标签 ios core-bluetooth screen-lock cbcentralmanager

我正在使用 CoreBluetooth 并且当应用程序处于前台或后台或设备锁定且设备屏幕仍处于打开状态时,回调方法 didDiscoverPeripheral 被频繁调用。 但是一旦屏幕关闭/变黑( sleep 模式),它的回调频率就会降低到几乎没有。

这可能是什么原因造成的?设备电池已满且蓝牙已打开。

请帮我解决这个问题。

谢谢。

最佳答案

关于 CoreBluetooth 和后台操作,您应该注意的两个主要事项:

1.) 应用进入后台后,CBCentralManagerScanOptionAllowDuplicatesKey 标志将被忽略。如果您在前台看到外围设备,您将不会在后台(在同一扫描期间)为同一外围设备获得另一个 didDiscover 回调。您可以通过关闭外围设备电源来测试这一点,并且仅在您的中央设备在后台运行一段时间后才打开电源。然后您应该会收到回调。

2.) 另一个问题是外设发现的回调时间在后台时被限制了。例如,如果您会在 1 秒内在前台发现一个外围设备。在后台发现相同的外围设备可能需要长达 60 秒的时间。

关于ios - CoreBluetooth - centralManagers 方法 didDiscoverPeripheral 在 sleep 模式下变得最不频繁到没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551600/

相关文章:

ios - 应用程序在负载终止时崩溃,并出现 NSException 类型的未捕获异常

ios - Firebase 与模拟器连接但不在真实设备 iOS 中

iOS 应用程序即使在安装后也会崩溃,但新用户不会

ios - 重新加载蓝牙信号强度

android - 当我锁定屏幕时如何让我的应用程序在 Android 上运行?

android - 如何在 Android 上以编程方式更改屏幕锁定声音设置

javascript - 移动网络应用程序 JS 的屏幕锁定方向

ios - 在 iOS 应用程序和框架之间通过内存引用共享数据

iphone - 如何在通信挂起后重启 iPhone/iPad Bluetooth LE

objective-c - iPhone4S可以通过CoreBluetooth连接MBA吗?