如何将Apple Watch检测为蓝牙外设

时间:2018-06-01 22:12:17

标签: ios core-bluetooth apple-watch cbperipheral

我正在使用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:连接,此外围设备不提供任何心率数据,如下面的普通蓝牙心率监测器:

- (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似乎只提供一个字符串" name"和" UUID"在连接之前。

有谁知道在这里识别Apple Watch的方法,或者可能在retrieveConnectedPeripheralsWithServices方法用法中过滤掉它?

1 个答案:

答案 0 :(得分:2)

结果我只需要意识到服务说明符属于OR搜索运算符。即它返回提供任何服务的设备,而不仅仅是提供所有服务的设备。

Apple Watch毕竟没有宣传心率服务!