转到后台时BLE扫描是否停止?

时间:2014-11-24 18:07:48

标签: ios bluetooth bluetooth-lowenergy core-bluetooth

我正在扫描硬件设备。 在前台我可以看到设备。 当我在前景中开始扫描而不是移动到背景时,比我打开硬件BLE,扫描停止,应用程序无法检测到硬件。

如果我将应用程序打开到前台,则继续扫描并找到设备。

我设置了键:

  <string>bluetooth-peripheral</string>
        <string>bluetooth-central</string>

以及后台模式:

location updates
external accessory communication
uses BLE accessories
acts as BLE ACCESSORY

但没有。系统不允许我在背景上检测设备,只检测前景。

我缺少什么?

2 个答案:

答案 0 :(得分:0)

发现您必须在后台设置您要查找的服务ID,否则它将无法正常工作。 无论如何,背景中的扫描非常慢,可能需要几分钟才能检测到!!

 [_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:DEVICE_INFO_SERVICE_UUID]]

答案 1 :(得分:0)

您只能在后台扫描BLE以获取特定的serviceUUID,您可以通过传递nil进行扫描,就像我们进行前景扫描一样。

另外,请确保在主线程中启动BLE扫描并设置正确的选项,如下所示。

 NSArray *services = @[[CBUUID UUIDWithString:UUID1],[CBUUID UUIDWithString:UUID2],[CBUUID UUIDWithString:UUID3]];
dispatch_async(dispatch_get_main_queue(), ^{
    [self.coreBluetoothManager scanForPeripheralsWithServices:services options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber  numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil]];
});