什么是同时检测多个BLE超出范围的最佳方法?

时间:2016-10-05 09:02:46

标签: ios bluetooth-lowenergy core-bluetooth cbperipheralmanager

问题陈述:如果我有多个BLE,我会逐个连接它们。但是现在当超过1个BLE同时超出范围时,我无法在核心蓝牙框架的中央管理器中检测到状态。

说明 -

1)如果我有一个BLE且我连接到该BLE,当该BLE超出范围时,它会调用- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error外设方法。

2)在- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error方法中,只要BLE再次出现在范围内,我就- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral要求将其连接起来。

3)当单个BLE一次超出范围时,此行为正常。当进入范围时再次连接。

4)但当多个BLE同时超出范围时,上述行为不能很好地发挥作用。

这是我的- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error代码

- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {

    [self.btMainDashboardViewController.tagsTableView reloadData];

      for (CBPeripheral *peripheral in self.btMainDashboardViewController.app.addedTagsArray) {
    if (peripheral.state == CBPeripheralStateDisconnected) {
      // if tag is not released go for autoconnection
      [self.centralManager connectPeripheral:peripheral options:nil];
    }
  }
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

依赖于BLE连接和相应的回调不是检查设备是否超出范围的正确方法。因为操作系统或其他设备可以随时取消连接。

我建议使用打开重复项的BLE扫描,并通过RSSI(信号强度)跟踪设备。根据您的使用情况,当RSSI低于阈值或您停止扫描设备时,您可以确定设备超出范围。

希望这有帮助!