iOS Swift 将基本心率数据作为广播消息探索,无需配对
Posted
技术标签:
【中文标题】iOS Swift 将基本心率数据作为广播消息探索,无需配对【英文标题】:iOS Swift explore basic heart rate data as broadcast messages without pairing 【发布时间】:2020-10-22 07:55:54 【问题描述】:我正在实施一个 ios 演示应用程序,以从 Polar、Wahoo 等 HR 监视器读取数据。我发现并连接/配对(编辑)设备并从多个同时蓝牙连接中成功获取数据。
现在我的要求是从更多的 BLE 设备(数量超过 20 个)收集数据。我尝试使用 swift BLE API,它在没有/之前没有配对的情况下不提供心率数据。此外,蓝牙不适用于(似乎)这个数量的同时连接。有人建议我这样做:
"如果您只对基本的心率数据感兴趣,即每分钟的心跳次数值 那么我假设您可能能够处理 40 个单位,因为您不必这样做 实际与单位连接。听广播消息就足够了 因为广播消息包括每个设备的每分钟节拍值。”
这意味着我无需配对设备即可从广播消息中获取基本心率数据。我的疑问:
Q1:我真的可以在不配对的情况下(仅通过发现)获得基本的心率数据吗?
Q2:原生 BLE API 是否支持这个?
Q3:有什么方法/API/SDK/例子可以达到这个目的?
Q4:如果我能每秒钟获取一次数据会更好。
Q5:我可以从 HealthKit 获得任何帮助吗?
----------------更新 1 ----------------
当我发现 BLE 设备时使用
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)
我找到了 6 个值的 kCBAdvDataManufacturerData 数组。
我点击此链接从 Polar H10 设备的 kCBAdvDataManufacturerData 键中提取 HR 数据,Extract data from kCBAdvDataManufacturerData on Swift
但是我失败了,如何实现呢?
----------------更新 2 ----------------
终于找到解决办法了,有需要的请点这个链接。
https://github.com/polarofficial/polar-ble-sdk/issues/103
提前致谢。
【问题讨论】:
【参考方案1】:你朋友指的广播信息是广告数据,非常有限(31 bytes),还取决于你是否控制了蓝牙设备中的固件。
A1:有可能,如果硬件在广告数据中提供该信息
A2:可以,可以通过CBCentralManager的delegate method获取广告数据
A3:如果你已经实现了 BLE 连接到一个设备,你可能已经知道如何使用 CBCentralManager,但是如果你需要一个链接,这里是一个CoreBluetooth tutorial
A4:我认为你无法控制发现某个外围设备的频率
A5:我没用过 HealthKit,所以无法回答这个问题
【讨论】:
谢谢。很好的答案。对于第四季度。它不是正常每秒提供数据吗?我每秒钟都看到这一点。以上是关于iOS Swift 将基本心率数据作为广播消息探索,无需配对的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 从 iOS HealthKit 应用程序读取心率?
如何使用 Swift 从 iOS HealthKit 应用程序读取心率?
无法在 iOS 设备上发送 UDP 广播 - NWConnection