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,所以无法回答这个问题

【讨论】:

谢谢。很好的答案。对于第四季度。它不是正常每秒提供数据吗?我每秒钟都看到这一点。 你的意思是在 adsData 中捕获关键值吗? func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, AdvertisementData: [String : Any], rssi RSSI: NSNumber) 是的,通常您可能会每秒钟看到一次数据,但您无法控制更新的频率。是的,蓝牙设备可以决定它想要宣传哪些数据,您无需连接到设备即可获得。通常用于广播支持的(短)服务 UUUID 或设备名称。请记住,它只有 31 个字节,你不能在里面放很多。 那么,对于没有连接的数据,我应该向制造商(wahoo,polar)请求什么值?在哪里设置这些数据? let heartRateServiceCBUUID = CBUUID(string: "0x180D") let heartRateMeasurementCharacteristicCBUUID = CBUUID(string: "2A37") let bodySensorLocationCharacteristicCBUUID = CBUUID(string: "2A38") 哪一个? 找到。制造商数据[5],最后一部分是人力资源数据!

以上是关于iOS Swift 将基本心率数据作为广播消息探索,无需配对的主要内容,如果未能解决你的问题,请参考以下文章

iOS HealthKit 如何保存心率(bpm)值?迅速

如何使用 Swift 从 iOS HealthKit 应用程序读取心率?

如何使用 Swift 从 iOS HealthKit 应用程序读取心率?

无法在 iOS 设备上发送 UDP 广播 - NWConnection

safari app extensions:从swift后台进程向所有选项卡广播消息

从 healthKit 中提取心率