如何在iOS9中获取RSSI

如何在iOS9中获取RSSI,ios,objective-c,ios9,core-bluetooth,Ios,Objective C,Ios9,Core Bluetooth,我有一个BLE源代码,显示了几个警告,我是新手 可悲的。请参阅下面的代码。我尝试用readRSSI替换,但告诉我不能将Int与Void进行比较。如何获取readRSSI的Int值?或者我应该如何更改代码 - (void)peripheralDidUpdateRSSI:(CBPeripheral * _Nonnull)peripheral error:(NSError * _Nullable)error { if (!isConnected) return; if

我有一个BLE源代码,显示了几个警告,我是新手 可悲的。请参阅下面的代码。我尝试用readRSSI替换,但告诉我不能将Int与Void进行比较。如何获取readRSSI的Int值?或者我应该如何更改代码

- (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已被弃用。

有两种方法可以获得
CBPeripheral
的RSSI。第一个是发现外围设备时。您将得到对
CBCentralManagerDelegate
方法的调用

func centralManager(_ central: CBCentralManager, 
             didDiscover peripheral: CBPeripheral, 
       advertisementData: [String : Any], 
                    rssi RSSI: NSNumber) {
    let rssi = intValue
    ...
}
如果您在前台运行,则可以为扫描选项中的键
CBCentralManagerScanOptionAllowDuplicatesKey
提供
true
to值,以获得对
didDiscover
的重复调用。这在后台不起作用

如果连接到外围设备,则可以定期调用
peripheral.readRSSI()
。这将导致回调到
didrearssi
cbperipheraldegate
方法:

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

有两种方法可以获得
CBPeripheral
的RSSI。第一个是发现外围设备时。您将得到对
CBCentralManagerDelegate
方法的调用

func centralManager(_ central: CBCentralManager, 
             didDiscover peripheral: CBPeripheral, 
       advertisementData: [String : Any], 
                    rssi RSSI: NSNumber) {
    let rssi = intValue
    ...
}
如果您在前台运行,则可以为扫描选项中的键
CBCentralManagerScanOptionAllowDuplicatesKey
提供
true
to值,以获得对
didDiscover
的重复调用。这在后台不起作用

如果连接到外围设备,则可以定期调用
peripheral.readRSSI()
。这将导致回调到
didrearssi
cbperipheraldegate
方法:

optional func peripheral(_ peripheral: CBPeripheral, 
         didReadRSSI RSSI: NSNumber, 
               error: Error?) {
    let rssi = RSSI.intValue
    ...
}
斯威夫特3

@IBAction func btnGetRSSI(_ sender: UIButton){

    self.selectedPeripehral.readRSSI() 
}

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

    var rssiInt: Int!

    rssiInt = RSSI.intValue

}
斯威夫特3

@IBAction func btnGetRSSI(_ sender: UIButton){

    self.selectedPeripehral.readRSSI() 
}

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

    var rssiInt: Int!

    rssiInt = RSSI.intValue

}

rssi框架的静态int到NSNumber*rssi=peripheral.rssi;你试过。。。你面临的问题是什么?这能回答你的问题吗?rssi框架的静态int到NSNumber*rssi=peripheral.rssi;你试过。。。你面临的问题是什么?这能回答你的问题吗?