Во-первых, вы должны знать, какой тип characteristic properties
вы использовали.
Тип 1: CBCharacteristicPropertyNotify
Таким образом, вы должны установить Notify для обслуживания характеристик.
, например:
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(nullable NSError *)error{
if (error) {
NSlog(@"error:%@",error.localizedDescription);
return ;
}
for (CBCharacteristic *characteristic in service.characteristics) {
if (characteristic.properties & CBCharacteristicPropertyNotify) {
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
}
}
Тип 2: CBCharacteristicPropertyRead
или другой
Таким образом, вы должны прочитать нормативное значение после отправки данных успеха.
- (void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error{
if (error) {
NSlog(@"error:%@",error.localizedDescription);
return ;
}
if (!(characteristic.properties & CBCharacteristicPropertyNotify)) {
[peripheral readValueForCharacteristic:characteristic];
}
}
после этого, вы можете получить данные:
- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error{
if (error) {
NSlog(@"error:%@",error.localizedDescription);
return ;
}
NSlog(@"characteristic value = %@",characteristic.value);
uint8_t *data = (uint8_t *)[characteristic.value bytes];
NSMutableString *temStr = [[NSMutableString alloc] init];
for (int i = 0; i < characteristic.value.length; i++) {
[temStr appendFormat:@"%02x ",data[i]];
}
NSlog(@"receive value:%@",temStr);
}
Вы можете найти что-нибудь помочь с этой демонстрации: https://github.com/arrfu/SmartBluetooth-ios-objective-c