corebluetooth Lectura de error RSSI: la operación se canceló

Estoy desarrollando una aplicación que utiliza el marco Corebluetooth,

y conéctese a un dispositivo BLE para get el valor de RSSI.

Configuré una function para leer RSSI periódicamente, el código del timer está debajo

NSTimer *timer; timer = [NSTimer scheduledTimerWithTimeInterval:1.2f target:self selector:@selector(detectRSSI) userInfo:nil repeats:YES]; 

y el código detectionRSSI está debajo

 - (void)detectRSSI { [self.peripheral readRSSI]; } 

Entonces la pregunta es:

la function funciona bien, pero cuando establezco un intervalo de time de less de 1.2 segundos,

the peripheralDidUpdateRSSI informará aleatoriamente un post de error como este:

 The operation was cancelled. 

Y no sucedería si la tasa es de más de 1.2 segundos.

¿Alguien tiene alguna idea de leer el valor de RSSI con mayor frecuencia (0,5 segundos o less)?

También encuentro el mismo problema. Para mí, funciona cuando simplemente agrego sleep(2) dentro de peripheralDidUpdateRSSI . Simplemente no olvide utilizar la queue de background al inicializar CBCentralManager.

 - (void)peripheralDidUpdateRSSI:(CBPeripheral *)peripheral error:(NSError *)error { NSLog(@"RSSI = %@", peripheral.RSSI); sleep(2); [self.connectedPeripheral readRSSI]; }