我有显示几个警告的BLE源代码,我是新手
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是一个静态整数。
* isConnected是一个布尔值。
编辑:问题是自iOS 8.0起不推荐使用RSSI。
最佳答案
有两种获取CBPeripheral
的RSSI的方法。首先是发现外围设备时。您将调用CBCentralManagerDelegate
方法
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber) {
let rssi = intValue
...
}
如果在前台运行,则可以在扫描选项中为键
true
提供CBCentralManagerScanOptionAllowDuplicatesKey
的值,以重复调用didDiscover
。这在后台不起作用。如果您连接到外围设备,则可以定期呼叫
peripheral.readRSSI()
。这将导致对didReadRSSI
CBPeripheralDelegate
方法的回调:optional func peripheral(_ peripheral: CBPeripheral,
didReadRSSI RSSI: NSNumber,
error: Error?) {
let rssi = RSSI.intValue
...
}
关于ios - 如何在iOS9中获取RSSI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43422247/