問題文 : 端に複数の 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];
}
}
}
前もって感謝します。