2017-04-15 22 views
-1

得到RSSI我有一個顯示幾個警告BLE源代碼,我是新來 BLE。請參閱下面的代碼。我試圖用readRSSI替換,但告訴我我不能比較Int和Void。如何獲得readRSSI的Int值?或者我應該如何更改代碼?如何iOS9

- (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是一個布爾值。

編輯:問題是,RSSI是因爲iOS的8.0棄用。

+0

RSSI籠的NSNumber的靜態INT * RSSI = peripheral.RSSI; –

+0

ü嘗試......什麼問題烏爾面對..? –

回答

0

有獲得CBPeripheral的RSSI的兩種方式。首先是外圍設備被發現的時候。你會得到一個調用CBCentralManagerDelegate方法

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

如果您在前臺運行,那麼你可以提供的true的值在掃描選項的關鍵CBCentralManagerScanOptionAllowDuplicatesKey得到重複調用didDiscover。這在後臺不起作用。

如果連接到外設,那麼你可以定期調用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 

}