我有显示多个警告的BLE源代码,我是新手唔。请参阅下面的代码。我尝试用readRSSI替换,但告诉我我无法将Int与Void进行比较。如何获取读取 RSSI 的 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 是一个布尔值。
编辑:问题是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
to 的值,以重复调用didDiscover
。这在后台不起作用。
如果您连接到外围设备,则可以定期调用peripheral.readRSSI()
。 这将导致对 didReadRSSI
CBPeripheralDelegate
方法的回调:
optional func peripheral(_ peripheral: CBPeripheral,
didReadRSSI RSSI: NSNumber,
error: Error?) {
let rssi = RSSI.intValue
...
}
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
}