writeValue periférico: forCharacteristic: type: return null error and value

Estoy usando el siguiente código escrito por Apple.

https://developer.apple.com/library/mac/samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4

Aquí está la sección writeValue escrita por Apple

if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A39"]]) { uint8_t val = 1; NSData* valData = [NSData dataWithBytes:(void*)&val length:sizeof(val)]; [aPeripheral writeValue:valData forCharacteristic:aChar type:CBCharacteristicWriteWithResponse]; } 

Agregué didWriteValueForCharacteristic

 - (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error { NSLog(@"Did write characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID); NSLog(@"With error: %@", [error localizedDescription]); } 

La printing de didWriteValueForCharacteristic es la siguiente:

 Did write characteristic value : (null) with ID Unknown (<2a39>) With error: (null) 

He usado dos monitores cardíacos diferentes y la aplicación Blue Light (simula un dispositivo ble) pero obtengo el mismo resultado.

¿Por qué obtengo un valor nulo para el valor y el error de didWriteValueForCharacteristic?

Lo que ves es el último valor de lectura de la característica. Como nunca lo leíste antes, es nil . readValueForCharacteristic: leer explícitamente el valor para actualizarlo en el lado central con el método readValueForCharacteristic: