【发布时间】:2021-03-22 16:49:08
【问题描述】:
我正在使用这个 iBeacon BLE 设备https://www.beaconzone.co.uk/LC01BodyTemperature 并尝试读取它的温度数据。
通过访问ScanResult.scanRecord.bytes,我已经成功地在Android Kotlin 中使用RxAndroidBle 做到了这一点,现在我尝试通过阅读ScannedPeripheral.advertisementData.manufacturerData 在iOS Swift 中使用RxBluetoothKit 做同样的事情。
根据我对文档的理解,该字段应该是 bytes 字段的 Android 等效项,但在每次测试中,我总是返回 nil。
我还尝试通过在advertisementData 中访问CBAdvertisementDataManufacturerDataKey 在centralManager(_:didDiscover:advertisementData:rssi:) 函数中本地访问它,但这也返回了nil。
我需要从 iBeacon 的原始数据中获取的字节位于位置 45(温度的整数部分)和 46(温度的小数部分),但我没有得到任何在 @ 的 advertisementData 中传输的字节数组987654333@,长度由设备说明书建议。
你对我做错了什么有什么建议吗?
【问题讨论】:
-
CBCentralManager的扫描选项是什么?您的设备可能会在centralManager(_:didDiscover:advertisementData:rssi:)中出现多次,事情就是这样,它可能会逐个出现,有时没有名称,然后有名称等,即检查直到有广告数据? -
@Larme 我使用此选项
let options = [ CBCentralManagerOptionRestoreIdentifierKey: "RestoreIdentifierKey", CBCentralManagerScanOptionAllowDuplicatesKey: true ] as [String: AnyObject],是的,它会逐个显示,但我正在寻找的信息不存在。 -
如果你使用LightBlue.app,广告会出现在那里吗?
-
@Larme 它只显示服务数据,不包含我需要的信息,它不显示制造商数据...
-
标签: ios swift ibeacon rxandroidble ios-bluetooth