Ios CoreBluetooth-CentralManager方法DidDiscoveryPeripheral在睡眠模式下变得最不频繁,甚至没有

Ios CoreBluetooth-CentralManager方法DidDiscoveryPeripheral在睡眠模式下变得最不频繁,甚至没有,ios,core-bluetooth,screen-lock,cbcentralmanager,Ios,Core Bluetooth,Screen Lock,Cbcentralmanager,我使用的是coreblutooth,当应用程序前景化或背景化或设备锁定且设备屏幕仍处于打开状态时,会频繁调用回调方法didiscoverperipheral。 但一旦屏幕关闭/关闭(睡眠模式),它的回调频率就会降低到几乎为零 这可能是什么原因造成的?设备电池已满,蓝牙已打开 请帮我解决这个问题 谢谢。关于CoreBluetooth和后台操作,您应该注意两个主要事项: 1.)将应用程序置于后台后,CBCentralManagerScanOptionAllowDuplicatesKey标志将被忽略。

我使用的是
coreblutooth
,当应用程序前景化或背景化或设备锁定且设备屏幕仍处于打开状态时,会频繁调用回调方法
didiscoverperipheral
。 但一旦屏幕关闭/关闭(睡眠模式),它的回调频率就会降低到几乎为零

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

请帮我解决这个问题


谢谢。

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

1.)将应用程序置于后台后,
CBCentralManagerScanOptionAllowDuplicatesKey
标志将被忽略。如果您在前台看到一个外设,您将不会在后台看到该外设的另一个didDiscover回调(在相同的扫描期间)。您可以通过关闭外围设备的电源来测试这一点,并且只有在您的中央设备在后台放置一段时间后才能打开电源。然后您应该会收到回调


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

关于核心蓝牙和后台操作,您应该注意两个主要事项:

1.)将应用程序置于后台后,
CBCentralManagerScanOptionAllowDuplicatesKey
标志将被忽略。如果您在前台看到一个外设,您将不会在后台看到该外设的另一个didDiscover回调(在相同的扫描期间)。您可以通过关闭外围设备的电源来测试这一点,并且只有在您的中央设备在后台放置一段时间后才能打开电源。然后您应该会收到回调


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

关于核心蓝牙和后台操作,您应该注意两个主要事项:

1.)将应用程序置于后台后,
CBCentralManagerScanOptionAllowDuplicatesKey
标志将被忽略。如果您在前台看到一个外设,您将不会在后台看到该外设的另一个didDiscover回调(在相同的扫描期间)。您可以通过关闭外围设备的电源来测试这一点,并且只有在您的中央设备在后台放置一段时间后才能打开电源。然后您应该会收到回调


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

关于核心蓝牙和后台操作,您应该注意两个主要事项:

1.)将应用程序置于后台后,
CBCentralManagerScanOptionAllowDuplicatesKey
标志将被忽略。如果您在前台看到一个外设,您将不会在后台看到该外设的另一个didDiscover回调(在相同的扫描期间)。您可以通过关闭外围设备的电源来测试这一点,并且只有在您的中央设备在后台放置一段时间后才能打开电源。然后您应该会收到回调


2.)另一个问题是,在后台时,外围设备发现的回调时间被缩短。例如,如果在前景中,您将在1秒内发现一个外围设备。在后台发现同一外设可能需要60秒的时间。

tdevoy是正确的,但是,我会给发现值一点更乐观的时间。根据我的经验,当一个或两个设备都处于背景/挂起状态时,发现只需要1-2秒


如果你的应用程序在后台时没有收到回调,那么很有可能你的代码有点错误。在WWDC 2013 CoreBluetooth视频中,工程师提供了关于如何实现您所期望的行为的明确说明。一旦您能够接收回调,您就可以安排并呈现UILocalNotification,它将给出与接收文本消息类似的行为。

tdevoy是正确的,但是,我会给您稍微乐观一点的时间来发现值。根据我的经验,当一个或两个设备都处于背景/挂起状态时,发现只需要1-2秒


如果你的应用程序在后台时没有收到回调,那么很有可能你的代码有点错误。在WWDC 2013 CoreBluetooth视频中,工程师提供了关于如何实现您所期望的行为的明确说明。一旦您能够接收回调,您就可以安排并呈现UILocalNotification,它将给出与接收文本消息类似的行为。

tdevoy是正确的,但是,我会给您稍微乐观一点的时间来发现值。根据我的经验,当一个或两个设备都处于背景/挂起状态时,发现只需要1-2秒

如果你的应用程序在后台时没有收到回调,那么很有可能你的代码有点错误。在WWDC 2013 CoreBluetooth视频中,工程师提供了关于如何实现您所期望的行为的明确说明。一旦您能够接收回调,您就可以安排并提供UILocalNotification,该通知将给出类似的结果