我正在尝试使用CoreBluetooth API连接到心率监测器。

根据蓝牙规范,心率监测器服务为0x180D。要了解蓝牙设备具有哪些服务,您可以连接到该设备,然后请求可用的服务。如果设备服务之一是0x180D,您将获得一个心率监视器。不幸的是,这意味着要连接到附近所有的蓝牙设备以过滤心率监测器。

幸运的是,iOS具有以下-scanForPeripheralsWithServices:方法,该方法可扫描宣传特定服务的蓝牙设备。我遇到的问题是有些心率监测器宣传其服务,而有些却没有。

其他应用程序如何连接到心率监测器?他们是否连接到附近的每个蓝牙设备以发现它是否是心率监测器?

最佳答案

核心蓝牙只能基于已知数据进行过滤。如果设备宣传180D服务,则您的应用会在过滤时发现它。如果该设备未宣传180D,则CB(或其他任何东西)没有其他信息使其可以被选中。

因此,检测所有设备的唯一方法是扫描而不过滤特定服务。这是最简单,最有效的方法。

关于ios - 如何过滤心率监测器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25324692/

10-09 07:35