Я использую CoreBluetooth для составления списка подключенных устройств, предлагающих услугу «ЧСС» с помощью метода CBCentralManager
retrieveConnectedPeripheralsWithServices
.
NSArray *services = @[[CBUUID UUIDWithString:BT_DEVICEINFO_SERVICE_UUID],
[CBUUID UUIDWithString:BT_HEARTRATE_SERVICE_UUID]];
NSArray *connectedDevices = [_centralMana retrieveConnectedPeripheralsWithServices:services];
В этот список включены мои Apple Watch в качестве CBPeripheral, но после подключения к connectPeripheral:
это периферийное устройство не предоставляет данные о частоте сердечных сокращений, как это делают обычные мониторы сердечного ритма Bluetooth, приведенные ниже:
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
if ([service.UUID isEqual:[CBUUID UUIDWithString:BT_HEARTRATE_SERVICE_UUID]]) {
// Apple Watch peripheral never gets here.
for (CBCharacteristic *aChar in service.characteristics){
// Request heart rate notifications
if ([aChar.UUID isEqual:[CBUUID UUIDWithString:BT_HRMEASUREMENT_CHARACTERISTIC_UUID]]) {
[_currentDevice setNotifyValue:YES forCharacteristic:aChar];
}
}
}
}
То, что я пытаюсь сделать, это определить Apple Watch перед подключением к нему, чтобы я мог отфильтровать его из списка доступных устройств для измерения частоты пульса.К сожалению, CBPeripheral, кажется, предлагает только строку «имя» и «UUID» перед подключением.
Кто-нибудь знает способ идентификации Apple Watch здесь, или, возможно, отфильтровать его при использовании метода retrieveConnectedPeripheralsWithServices