Ответ 1
Согласно Apple doc на CoreBluetooth, вы должны использовать:
- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result;
чтобы ответить на центральный. Это также выбор, когда вы получаете запрос на чтение
Я реализую клиент и сервер 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];
}
однако клиент не может получать какие-либо данные. Есть идеи? Спасибо за вашу помощь.
Согласно Apple doc на CoreBluetooth, вы должны использовать:
- (void)respondToRequest:(CBATTRequest *)request withResult:(CBATTError)result;
чтобы ответить на центральный. Это также выбор, когда вы получаете запрос на чтение
Для использования:
- (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals;
вам сначала нужно подписаться на него, используя
- (void)setNotifyValue:(BOOL)enabled forCharacteristic:(CBCharacteristic *)characteristic;
с клиентской стороны.