自从iOS 8更新以来,我遇到了一个问题,现在我的应用已连接到BLE设备,并由于使用了计时器和ReadRSSI方法而定期读取RSSI。

调用readRSSI方法(使用断点检查),以便在此之前一切都很好。

根据文档,调用readRSSI应该触发回调

- (void)peripheral:(CBPeripheral *)peripheral didReadRSSI:(NSNumber *)RSSI error:(NSError *)error

但是,不是每次都调用此委托(delegate)方法。但是,当我打开和关闭手机蓝牙时,我会得到RSSI更新。有人遇到过这个问题吗?我该如何解决呢?

最佳答案

我遇到了同样的问题,首先认为这可能是我的错,但后来却发现确实很奇怪。

我编写了类似的程序,使用iPhone连接到BLE信标,然后使用[CBPeripheral readRSSI]获取信号强度。 BLE信标首次连接到我的iPhone时,一切都会顺利进行。但是,如果断开连接,然后再次重新连接,则将不再调用readRSSI方法。
仅当我在iPhone上重新启动蓝牙后,问题才能得到解决。

我一步一步地在 Debug模式下运行程序,令我惊讶的是,我发现完全没有问题。即使我断开了很多次并再次重新连接,readRSSI方法仍然可以正确调用。

希望这会有所帮助。我也在等待这个奇怪事情的答案。

关于ios - ReadRSSI不调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26061359/

10-11 02:35