我正在使用Corebluetooth框架开发应用程序,
并连接到BLE设备以获取RSSI值。
我设置了一个定期读RSSI的功能,定时器代码低于
NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:1.2f target:self selector:@selector(detectRSSI) userInfo:nil repeats:YES];
并且detectRSSI代码在
之下- (void)detectRSSI
{
[self.peripheral readRSSI];
}
所以问题是,
该功能正常,但是当我将时间间隔设置为小于1.2秒时,
peripheralDidUpdateRSSI将随机报告错误消息,如下所示:
The operation was cancelled.
如果费率超过1.2秒,就不会发生。
有没有人想更频繁地读取RSSI值(0.5秒或更短)?
答案 0 :(得分:0)
我也遇到同样的问题。对我来说,只需在sleep(2)
内添加peripheralDidUpdateRSSI
即可。只是在初始化CBCentralManager时不要忘记使用后台队列。
- (void)peripheralDidUpdateRSSI:(CBPeripheral *)peripheral error:(NSError *)error
{
NSLog(@"RSSI = %@", peripheral.RSSI);
sleep(2);
[self.connectedPeripheral readRSSI];
}