自从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/