2017-02-21 7 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 기기와 연결 또는 결합 - 사용자가 자신의 아이폰에서 결합-요청을 수락한다면 나는 단지 알고 싶어요!

답변

0

아니요. 불가능합니다. 나는 애플이 보안상의 관점에서 링크가 적절하게 암호화되고 인증되었는지를 아는 것이 중요 할 수 있기 때문에 애플이이 결정을 내린 이유를 모른다.

주변 장치의 펌웨어를 제어 할 수 있으면 이벤트가 페어링 될 때 특성에 뭔가를 보낼 수 있습니다.

+0

>>> 주변기기의 펌웨어를 제어 할 수 있다면 페어링 이벤트가 발생할 때 특성에 뭔가를 보낼 수 있습니다. <<< 네, 그렇습니다. 그러나 이것이 제가 피하고 싶었던 것입니다. 동정 ... 글쎄, 지금까지 고마워! – SbstnErb