複数の BLE アプリを構築していますが、BLE プロトコルと外部ベンダーでこの問題が発生しました。ほとんどの場合、BLE は意図したとおりに機能しますが、特定の周辺機器のサービスの検出に失敗し、電話を再起動またはリセットするまで再び機能しないことがあります。
他の誰かがこの問題を経験しましたか?
周辺機器の使用が完了すると、マネージャーがclosePeripheralConnection
メソッドを呼び出します。関連するコード:
// Disconnect from peripheral
- (void)closePeripheralConnection
{
NSLog(@"== closePeripheralConnection ==");
// If the peripheral is connected
if (self.peripheral.state == CBPeripheralStateConnected && self.peripheral != nil) {
// Cancel connection
[self.manager cancelPeripheralConnection:self.peripheral];
} else {
[self clearPeripheralSettings];
}
}
// Clear peripheral settings
- (void)clearPeripheralSettings
{
// Clear peripheral variables
self.peripheral = 0;
// Clear services
self.service = 0;
// Clear characteristic values
self.data = 0;
self.notifyCharacteristic = 0;
}
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{
[self clearPeripheralSettings];
}