因此,通过阅读CBPeripheralDelegate
文档,似乎RSSI
和peripheralDidUpdateRSSI:error:
在iOS 8中已被弃用。
[我注意到我的信号强度指示器不再更新,因此我进行了一些研究,发现了一个新方法([CBPeripheralDelegate peripheral:didReadRSSI:error:]
),该方法据说在调用readRSSI
方法后会被异步地回调。不幸的是,即使我确实将父类设置为CBPeripheral委托,该方法似乎也没有被回调。
还有其他人在iOS 8 CoreBluetooth更新方面遇到问题吗?
[在我也有公开雷达的Apple Developer论坛上已经发布了有关此问题的已知问题。
问题似乎是,特别是在与外围设备建立初始连接之后,才从未在iOS 8上调用新的回调方法peripheral:didReadRSSI:error:
。我发现的唯一解决方法是通过打开/关闭手机或重新启动手机来重置手机上的蓝牙。
Here is the link to open radar I filed.
刚刚测试了我的示例,该示例在当前的8.2版本中显示了此问题,并且我再也看不到从未调用过的新iOS 8委托方法的任何问题。我正在按照8.2版本将雷达标记为已解决。
在iOS 8.1.1中,仅会为您所连接的外围设备调用peripheral:didReadRSSI:error:
。如果仅通过扫描发现外围设备,然后在外围设备上调用readRSSI
,则不会调用该回调。
首先尝试连接到外围设备(通过CBCentralManager
的connectPeripheral:options:
,然后再调用readRSSI
。]
它可以在iOS 8.0.2上运行,但现在受到限制。我每200毫秒发送一次readRSSI,每秒仅收到一次响应。在iOS 7.1上运行良好。
它在iOS 8.0.2中再次可用!
使用[myPeripheral readRSSI];