Wen*_* Wu 0 objective-c ios core-bluetooth ios9
我有显示几个警告的 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];
}
}
Run Code Online (Sandbox Code Playgroud)
*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
...
}
Run Code Online (Sandbox Code Playgroud)
如果您在前台运行,那么您可以true为CBCentralManagerScanOptionAllowDuplicatesKey扫描选项中的键提供值to以重复调用didDiscover. 这在后台不起作用。
如果您连接到外围设备,那么您可以定期调用peripheral.readRSSI(). 这将导致对didReadRSSI CBPeripheralDelegate方法的回调:
optional func peripheral(_ peripheral: CBPeripheral,
didReadRSSI RSSI: NSNumber,
error: Error?) {
let rssi = RSSI.intValue
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |