2017-04-15 1 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はブール値です。

編集:問題は、RSSIがiOS 8.0以降廃止されていることです。

+0

のNSNumberにRSSIケージの静的INT * RSSI = peripheral.RSSI。 –

+0

あなたは試してみましたか? –

答えて

0

CBPeripheralのRSSIを取得するには2通りの方法があります。 1つ目は、周辺機器が検出されたときです。あなたはフォアグラウンドで実行している場合、あなたはdidDiscoverへのコールを繰り返し取得するためにスキャンオプションでキーCBCentralManagerScanOptionAllowDuplicatesKeyためにtrueの値を供給することができます

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

CBCentralManagerDelegateメソッドへの呼び出しを取得します。これはバックグラウンドでは機能しません。

周辺機器に接続している場合は、定期的にperipheral.readRSSI()に電話をかけることができます。これは、didReadRSSICBPeripheralDelegateメソッドへのコールバックをもたらすであろう。

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

SWIFT 3

@IBAction func btnGetRSSI(_ sender: UIButton){ 

    self.selectedPeripehral.readRSSI() 
} 

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

    var rssiInt: Int! 

    rssiInt = RSSI.intValue 

} 
関連する問題