2017-02-21 41 views
0

iOSのボンディングリクエストのユーザー決定を取得することは可能ですか?BLeデバイス(Objective-C、iOS 10)を接続することをユーザーに決定しました

  • 選択肢1:Abbort
  • 選択肢2:ボンディング要求の接続/ボンド

スクリーンショット: enter image description here

私はcentralManagerDidUpdateStateを使用しようとしましたが、それは一つだけと呼ばれていますブルートゥースをオンにすると、CBManagerStatePoweredOnで時刻を取得できます。

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral { 
    [peripheral setDelegate:self]; 
    [self _cancelConnectionRequests]; 
    [peripheral discoverServices:nil]; 

    BleDevice* bleDevice = [knownDevices findDevice:[peripheral.identifier UUIDString]]; 
    devicePaired(bleDevice.deviceId, bleDevice.primaryServiceUuid); 
} 

- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error { 
    [peripheral setDelegate:self]; 
    [self _cancelConnectionRequests]; 
    [peripheral discoverServices:nil]; 

    BleDevice* bleDevice = [knownDevices findDevice:[peripheral.identifier UUIDString]]; 
    deviceNotPaired(bleDevice.deviceId, bleDevice.primaryServiceUuid); 
} 

をしかし、両方の方法は、「中止」または「接続/結合」をクリックした後に呼び出されていません。

#pragma mark - CBCentralManagerDelegate 
- (void)centralManagerDidUpdateState:(CBCentralManager *)central { 

    info(@"centralManagerDidUpdateState"); 

     switch(central.state){ 

      case CBManagerStateUnauthorized: 
       info(@"unauthorized"); 
       break; 

      case CBManagerStatePoweredOff: 
       info(@"poweredOff"); 
       break; 

      case CBManagerStatePoweredOn: 
       info(@"poweredOn"); 
       break; 

      case CBManagerStateResetting: 
       info(@"resetting"); 
       break; 

      case CBManagerStateUnknown: 
       info(@"unknown"); 
       break; 

      case CBManagerStateUnsupported: 
       info(@"unsupported"); 
       break; 
     } 
} 

私はまた、「didConnectPeripheral」と「didFailToConnectPeripheral」を使用してみました! 少なくとも "didConnectPeripheral"はデバイスに接続しようとしている間に呼び出されますが、これはポップアップが表示される前に起こります!

他のアイデアはありますか?

注:私は、スキャンして問題がない BLEデバイスとの接続または結合 - ユーザーが自分のiPhoneから ボンディング要求を受け入れた場合、私が唯一知ってほしいです!

答えて

0

いいえ、それはできません。セキュリティの観点から、リンクが適切に暗号化されて認証されているかどうかをアプリが知ることが重要なのかもしれないので、なぜAppleがこの決定を下したのか分かりません。

ペリフェラルのファームウェアを制御できる場合は、イベントがペアになったときに特性上何かを送信させることができます。

+0

>>>周辺機器のファームウェアを制御することができれば、イベントがペアになったときに特性上何かを送信させることができます。 <<< はい、ありますが、これは私が避けたかったものです。同情... まあ、ありがとう! – SbstnErb

関連する問題