问题描述
我当时正在实施一个iOS演示应用程序,以从Polar,Wahoo之类的HR监视器读取数据。我发现并连接/配对了设备,并通过多个同时的蓝牙连接成功获取了数据。
现在我的要求是从更多BLE设备(数量超过20个)中收集数据。我尝试使用快速BLE API,但未/未配对之前无法提供心率数据。此外,蓝牙无法(似乎)在此同时连接数量下工作。有人建议我这样做:
”如果您只对基本心率数据感兴趣,即每分钟心跳数 那么我假设您可能能够处理40个单位,而不必 实际与单位联系。收听广播消息就足够了 因为广播消息包括每个设备的每分钟节拍值。”
这意味着我无需配对设备即可从广播消息中获取基本心率数据。我的查询:
Q1:我能否真正获得基本的心率数据而无需配对(仅通过发现)?
Q3:是否可以通过任何方法/ API / SDK /示例来实现此目的?
Q4:如果我每秒钟获取数据会更好。
Q5:我可以从HealthKit那里获得任何帮助吗?
----------------更新1 ----------------
当我发现使用BLE设备时
func centralManager(_ central: CBCentralManager,diddiscover peripheral: CBPeripheral,advertisementData: [String : Any],RSSi RSSI: NSNumber) { }
我发现kCBAdvDataManufacturerData数组具有6个值。
我点击了此链接,从Polar H10设备Extract data from kCBAdvDataManufacturerData on Swift
的kCBAdvDataManufacturerData密钥中提取HR数据。但是我失败了,如何实现呢?
----------------更新2 ----------------
https://github.com/polarofficial/polar-ble-sdk/issues/103
谢谢。
解决方法
您的朋友指的广播消息是广告数据,该数据非常有限(31 bytes),这还取决于您是否可以控制蓝牙设备中的固件。
A1:如果硬件在广告数据中提供了该信息,则有可能
A2:是的,您可以通过CBCentralManager的delegate method
获取广告数据A3:如果您已实现BLE连接到一台设备,则可能已经知道如何使用CBCentralManager,但是如果需要链接,这里是CoreBluetooth tutorial
A4:我认为您无法控制发现某个外围设备的频率
A5:我从来没有使用过HealthKit,所以我无法回答