【问题标题】:How do you scan for the same BLE device twice?您如何两次扫描相同的 BLE 设备?
【发布时间】:2014-12-30 11:40:21
【问题描述】:

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

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

    [centralManager stopScan];

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

这不起作用。

最终,iOS 决定告诉我的应用设备再次在做广告,但这需要几分钟时间。

如何说服 iOS 在不等待几分钟的情况下再次告诉我有关外围设备的信息?

【问题讨论】:

  • 您是否尝试过关闭您的centralManager 并创建一个新的?
  • @IanMacDonald 与这样的经理混在一起通常是个坏主意。 CBCentralManagerScanOptionAllowDuplicatesKey 将在前台工作。或者您可以尝试通过在 dispatch_async 调用中嵌入停止和启动来异步重新启动扫描。

标签: ios bluetooth-lowenergy core-bluetooth cbcentralmanager


【解决方案1】:

您可以在初始化CBCentralManager 时启用CBCentralManagerScanOptionAllowDuplicatesKey 选项。当您的应用程序在前台时,您会收到持续的回调,但是,您需要记住,当应用程序在后台时,CBCentralManagerScanOptionAllowDuplicatesKey 被禁用。此外,扫描间隔被限制到其前景对应物的约 60 分之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多