ios - iOS9获取RSSI的方法

标签 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 (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/

相关文章:

ios - 获取 "next"索引的 NSIndexPath?

ios - 有什么办法可以打开应用商店更新选项卡吗?

iOS:在文本 UILabel 周围绘制边框

objective-c - 在Sharekit2.0中自定义发到facebook的帖子

objective-c - 无法检查 iPhone 上是否存在配置文件

ios9 - 在iOS9.0中,MPVolumeSlider值未保持正确的值,它始终为0.0

ios - 删除 UIAlertController 中 textField 周围的填充和边框

ios - SpriteKit SKPhysicsBody applyTorque 导致 Sprite 位置改变

ios - 快速替换索引处的字符串值

iOS 7 动画 block 未被调用