Ios 检测多个BLE';它同时超出范围了吗?

Ios 检测多个BLE';它同时超出范围了吗?,ios,bluetooth-lowenergy,core-bluetooth,cbperipheralmanager,Ios,Bluetooth Lowenergy,Core Bluetooth,Cbperipheralmanager,问题陈述:如果在我的一端有多个BLE,我会一个接一个地连接它们。但现在,当超过1个BLE同时超出范围时,我无法检测核心蓝牙框架的中央管理器中的状态 解释- 1) 如果我有一个BLE并连接到该BLE,当该BLE超出范围时,它调用-(void)centralManager:(CBCentralManager*)central didDisconnectPeripheral:(CBPeripheral*)外围设备错误:(NSError*)error外围设备方法 2) 在-(void)centralMa

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

解释-

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

2) 在
-(void)centralManager:(CBCentralManager*)中央didDisconnectPeripheral:(CBPeripheral*)外围错误:(NSError*)error
方法中,我已调用
-(void)centralManager:(CBCentralManager*)中央diddconnectperipheral:(CBPeripheral*)外围设备
,以便在BLE再次进入范围时将其连接

3) 当单个BLE一次移动到范围之外时,此行为可以正常工作。并在范围内再次连接

4) 但当多个BLE同时超出范围时,上述行为不起作用

这是我的
-(void)centralManager:(CBCentralManager*)CentralDidDisconnectPeripheral:(CBPeripheral*)外围错误:(NSError*)错误
代码

- (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];
    }
  }
}

提前感谢。

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

我建议在打开副本的情况下使用BLE扫描,并通过RSSI(信号强度)跟踪设备。根据您的使用情况,您可以在RSSI降至阈值以下或停止扫描设备时确定设备超出范围


希望这有帮助

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

我建议在打开副本的情况下使用BLE扫描,并通过RSSI(信号强度)跟踪设备。根据您的使用情况,您可以在RSSI降至阈值以下或停止扫描设备时确定设备超出范围


希望这有帮助

您是说在CBCentralManager上有多个挂起的
connect
操作不起作用吗?能否显示
didDisconnectPeripheral
的代码?您是说在CBCentralManager上有多个挂起的
connect
操作不起作用?您能否显示
diddisconnect外设的代码?