2017-04-15 13 views
-1

여러 가지 경고를 표시하는 BLE 소스 코드가 있는데 나는 BLE을 처음 사용합니다. 아래 코드를 참조하십시오. readRSSI로 바꾸려고 시도했지만 Int와 Void를 비교할 수 없다고 알려줍니다. readRSSI의 Int 값은 어떻게 얻습니까? 또는 코드를 어떻게 변경해야합니까?iOS9에서 RSSI를 얻는 방법

- (void)peripheralDidUpdateRSSI:(CBPeripheral * _Nonnull)peripheral error:(NSError * _Nullable)error 
{ 
    if (!isConnected) 
     return; 
    if (rssi != peripheral.RSSI.intValue) 
    { 
     rssi = peripheral.RSSI.intValue; 
     [[self delegate] bleDidUpdateRSSI:activePeripheral.RSSI]; 
    } 
} 

* rssi는 정적 int입니다.

* isConnected는 부울입니다.

편집 : 문제는 iOS 8.0부터 RSSI가 사용되지 않습니다.

+0

정적 INT * RSSI = peripheral.RSSI; –

+0

시도해 봤는데 ... 무슨 문제가 ... –

답변

0

CBPeripheral10의 RSSI를 얻는 방법에는 두 가지가 있습니다. 첫 번째는 주변 장치가 발견 된 때입니다. 당신이 다음 didDiscover로 스캔 옵션에서 키 CBCentralManagerScanOptionAllowDuplicatesKey 반복하려면 요구에 true의 값을 제공 할 수 있습니다 포 그라운드에서 실행하는 경우 당신은 CBCentralManagerDelegate 방법

func centralManager(_ central: CBCentralManager, 
      didDiscover peripheral: CBPeripheral, 
     advertisementData: [String : Any], 
        rssi RSSI: NSNumber) { 
    let rssi = intValue 
    ... 
} 

에 전화를 받게됩니다. 이것은 백그라운드에서 작동하지 않습니다.

주변 기기에 연결된 경우 주기적으로 peripheral.readRSSI()으로 전화 할 수 있습니다. 이것은 didReadRSSICBPeripheralDelegate 방법 콜백 될 것이다

optional func peripheral(_ peripheral: CBPeripheral, 
     didReadRSSI RSSI: NSNumber, 
       error: Error?) { 
    let rssi = RSSI.intValue 
    ... 
} 
0

신속한 3

@IBAction func btnGetRSSI(_ sender: UIButton){ 

    self.selectedPeripehral.readRSSI() 
} 

func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?) { 

    var rssiInt: Int! 

    rssiInt = RSSI.intValue 

} 
의 NSNumber에 RSSI 케이지