iOS 8 CoreBluetooth不推荐使用RSSI方法
因此,通过阅读CBPeripheralDelegate
文档,似乎RSSI
和peripheralDidUpdateRSSI:error:
已被iOS 8弃用。
我注意到我的信号强度指示器不再被更新,所以我做了一些研究,发现了一种新的方法( [CBPeripheralDelegate peripheral:didReadRSSI:error:]
),据称在调用readRSSI
方法后异步调用。 不幸的是,即使我确实将父类设置为CBPeripheral委托,这个方法似乎也没有被回调。
有没有其他人有iOS 8 CoreBluetooth更新的问题?
在Apple开发者论坛上已经发布了一个已知的问题,我也有一个开放的雷达。
问题似乎是新的回调方法peripheral:didReadRSSI:error:
在初始连接到外围设备之后,从未在iOS 8上调用。 我发现的唯一解决方案是通过打开/关闭手机或重新启动手机来重置手机上的蓝牙。
这是我提交的开放式雷达的链接。
更新:
刚刚测试了我在当前8.2版本中显示此问题的示例,我不再看到任何问题,因为新的iOS 8委托方法永远不会被调用。 我按照8.2版本标记了我的雷达。
在iOS 8.1.1中, peripheral:didReadRSSI:error:
只会调用您连接的外围设备。 如果您只是通过扫描发现了外设并在其上调用了readRSSI
,则不会调用回调。
首先尝试连接外围设备(通过CBCentralManager
的connectPeripheral:options:
,然后调用readRSSI
。
它适用于iOS 8.0.2,但它现在受到限制。 我每200ms发送一次readRSSI,每秒只响应一次。 它适用于iOS 7.1。
它在iOS 8.0.2中再次运行!
使用[myPeripheral readRSSI];