我正在尝试使用CoreBluetooth API连接到心率监视器。
根据蓝牙规范,心率监测服务为0x180D。要了解蓝牙设备有哪些服务,您可以连接到它,而不是请求可用的服务。如果其中一个设备服务是0x180D,您将获得心率监测器。不幸的是,这意味着连接到附近的所有蓝牙设备以过滤心率监视器。
幸运的是,iOS有以下方法-scanForPeripheralsWithServices:,它扫描广告特定服务的蓝牙设备。我遇到的问题是有些心率监测器会宣传他们的服务,但有些则没有。
其他应用如何连接到心率监测器?他们是否连接到附近的每个蓝牙设备以发现它是否是心率监测器?
答案 0 :(得分:1)
核心蓝牙只能根据其知道的数据进行过滤。如果设备宣传180D服务,那么您的应用会在过滤时发现它。如果设备不通告180D,则CB(或任何其他)没有其他信息使其有资格被选中。
因此,检测所有设备的唯一方法是扫描而不过滤特定服务。这是最简单,最有效的方式。