0

iOSのコアBluetoothプログラミングを初めて使用しています。最近、周辺機器に接続すると、「Bluetooth Pairing Request」アラートが画面にポップアップするというこの問題が発生しました。私は、リクエストをキャンセルし、無効なピンに入った、あるいは単に何もしないにかかわらず、しかし、もしCBPeripheralは常にCBCentralManagerに接続します。ペアリングリクエストが失敗した場合でも

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral

デリゲートは常に呼び出されます。つまり、接続は常に成功します。これがなぜ起こるのか説明できる人は誰ですか?ありがとう。

答えて

0

ペリフェラルに接続すると、(void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral;がトリガーされます。そのため、BLEデバイスでペアリングが有効になっていると、ペアリングを求めるプロンプトが表示されます。ペアリングが成功しなかった場合、ペアリングに失敗した後に切断するコマンドがない場合は、接続されたままになりますが、サービス(*)と特性を検出しようとすると、 BLEデバイスの側面が設定されている)。

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral 
{ 
    NSLog(@"Did connect to peripheral: %@", peripheral); 

    [peripheral setDelegate:self]; 
    [peripheral discoverServices:nil]; //* discover peripheral services 
} 


- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error 
{ 
for (CBService *service in peripheral.services) { 
     NSLog(@"discovered service [%@]",service.UUID); 
     [peripheral discoverCharacteristics:nil forService:service]; 
    } 
} 
0

迅速な3

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral){ 

      self.bleManager.stopScan() 
      peripheral.discoverServices(nil) 
    } 
    func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { 

      self.displayToastMessage("Fail to connect") 
    } 

    func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?){ 

     if let er = error{ 
      self.displayToastMessage(er as! String) 
      return 
     } 
     if let services = peripheral.services as [CBService]!{ 
      print(services) 
     } 
    } 
    func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?){ 

      if let arraychar = service.characteristics as [CBCharacteristic]!{ 

       for getCharacteristic in arraychar{ 

         print(getCharacteristic) 
       } 
      } 
    } 
関連する問題