如何扫描两次相同的BLE设备?

时间:2014-11-03 18:30:36

标签: ios bluetooth-lowenergy core-bluetooth cbcentralmanager

我有一个iOS应用程序,可以扫描BLE外围设备,其中可能有很多,并允许用户决定是否连接到设备。连接后,用户还可以决定断开连接。所有这一切都很好。

我还想添加一个选项,允许用户改变主意并重新扫描设备,但这似乎有问题。最明显的方法是停止扫描并重新启动它,如:

    [centralManager stopScan];

    CBUUID *myServiceUUID = [CBUUID UUIDWithString: SERVICE_MYSERVICE];
    NSArray *services = [[NSArray alloc] initWithObjects: myServiceUUID, nil];
    [centralManager scanForPeripheralsWithServices: services options: nil];

这不起作用。

最终,iOS决定告诉我的应用该设备再次投放广告,但这需要几分钟。

我怎样才能说服iOS第二次告诉我有关外围设备而无需等待几分钟?

1 个答案:

答案 0 :(得分:0)

您可以在初始化CBCentralManagerScanOptionAllowDuplicatesKey时启用CBCentralManager选项。当您的应用位于前台时,您将获得不断的回调,但是,您需要记住,当应用在后台时,CBCentralManagerScanOptionAllowDuplicatesKey处于禁用状态。此外,扫描间隔被限制到其前景对应物的~60。