我正在使用 CoreBluetooth
并且当应用程序处于前台或后台或设备锁定且设备屏幕仍处于打开状态时,回调方法 didDiscoverPeripheral
被频繁调用。
但是一旦屏幕关闭/变黑( sleep 模式),它的回调频率就会降低到几乎没有。
这可能是什么原因造成的?设备电池已满且蓝牙已打开。
请帮我解决这个问题。
谢谢。
最佳答案
关于 CoreBluetooth 和后台操作,您应该注意的两个主要事项:
1.) 应用进入后台后,CBCentralManagerScanOptionAllowDuplicatesKey
标志将被忽略。如果您在前台看到外围设备,您将不会在后台(在同一扫描期间)为同一外围设备获得另一个 didDiscover 回调。您可以通过关闭外围设备电源来测试这一点,并且仅在您的中央设备在后台运行一段时间后才打开电源。然后您应该会收到回调。
2.) 另一个问题是外设发现的回调时间在后台时被限制了。例如,如果您会在 1 秒内在前台发现一个外围设备。在后台发现相同的外围设备可能需要长达 60 秒的时间。
关于ios - CoreBluetooth - centralManagers 方法 didDiscoverPeripheral 在 sleep 模式下变得最不频繁到没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551600/