我有显示多个警告的 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 是一个 bool 值。
编辑:问题是 RSSI 从 iOS 8.0 开始就被弃用了。
最佳答案
有两种方法可以获取CBPeripheral
的RSSI。第一个是发现外围设备时。您将调用 CBCentralManagerDelegate
方法
func centralManager(_ central: CBCentralManager,
didDiscover peripheral: CBPeripheral,
advertisementData: [String : Any],
rssi RSSI: NSNumber) {
let rssi = intValue
...
}
如果您在前台运行,那么您可以为扫描选项中的键 CBCentralManagerScanOptionAllowDuplicatesKey
提供 true
的值,以重复调用 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/