1

問題文 : 端に複数の BLE があり、それらを 1 つずつ接続する場合。しかし、複数の BLE が同時に範囲外になると、コア Bluetooth フレームワークの中央マネージャーで状態を検出できません。

説明 -

1) 単一の BLE があり、その BLE に接続している場合、その BLE が範囲外になると- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error、周辺機器のメソッドが呼び出されます。

2)メソッドで、BLE が再び範囲内に入るたびに接続するように- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error呼び出しを行いました。- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral

3) この動作は、一度に 1 つの 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];
    }
  }
}

前もって感謝します。

4

1 に答える 1