Подтвердить что ты не робот

Как правильно реализовать didReceiveWriteRequests? iOS6 CoreBluetooth

Я реализую клиент и сервер iOS CoreBluetooth для отправки данных

client site
[self.connectedPeripheral writeValue:mainData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

и

- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic 
{
   NSString *s= [[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
   NSLog(@"didWriteValue characteristic.value: %@ ", s);
} 

и серверный сайт

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests
{
  NSData *res= [[NSString stringWithFormat:@"Hello"] dataUsingEncoding:NSUTF8StringEncoding];
 [self.peripheral updateValue:res
                        forCharacteristic:self.writeCharacteristic
                     onSubscribedCentrals:nil];
 [peripheral respondToRequest:aReq withResult:CBATTErrorSuccess];
}

однако клиент не может получать какие-либо данные. Есть идеи? Спасибо за вашу помощь.

4b9b3361

Ответ 1

Согласно Apple doc на CoreBluetooth, вы должны использовать:

- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result;

чтобы ответить на центральный. Это также выбор, когда вы получаете запрос на чтение

Ответ 2

Для использования:

- (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals;

вам сначала нужно подписаться на него, используя

- (void)setNotifyValue:(BOOL)enabled forCharacteristic:(CBCharacteristic *)characteristic;

с клиентской стороны.