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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (31)

我使用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之前识别Apple Watch,这样我就可以将它从可用心率设备列表中筛选出来。但是,CBPeripheral只能在连接之前提供一个字符串“name”和“UUID”。

有没有人知道在这里识别Apple Watch的retrieveConnectedPeripheralsWithServices方法,或者可能在方法用法中将其滤除?

提问于
用户回答回答于

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

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问5 回答
  • 找虫虫

    0 粉丝0 提问5 回答
  • 人生的旅途

    10 粉丝484 提问4 回答
  • 骑牛看晨曦

    4 粉丝522 提问4 回答

扫码关注云+社区

领取腾讯云代金券