在 iOS 中单独访问所有三个 BLE 广告通道

Posted

技术标签:

【中文标题】在 iOS 中单独访问所有三个 BLE 广告通道【英文标题】:Accessing all three BLE advertisement channels individually in iOS 【发布时间】:2017-06-21 07:21:52 【问题描述】:

蓝牙低功耗使用 40 个通道,每个通道 2 MHz 宽,跨越 未经许可的 2.4 GHz 无线电频段。在 40 个频道中,BLE 广告在三个频道上播放。这些广告频道名义上标记为 37、38 和 39,并且分别在 2402 MHz、2426 MHz 和 2480 MHz 处间隔很大。

ios 的核心位置,所有扫描到的 BLE 信标都列在一个 NSArray 中,并且可以轻松访问每个信标的 RSSI 值。例如。

CLBeacon* beacon1 = [beacons firstObject]; NSNumber *RSSI = [NSNumber numberwithFloat:beacon1.RSSI];

这里,RSSI 值是 CoreLocation 提供的“平均”值。此外,此 RSSI 实时波动很大。

现在,我的问题是,iOS(objective-C)中是否有任何方法/框架可以访问每个广告频道,以便我们可以从每个频道获取 RSSI 值?

已发表的期刊 [http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7103024&tag=1] 展示了所有三个广告渠道的 RSSI 结果。该论文称,该功能(分别访问三个广告频道)在 iOS 7.0 之后可用。但是,我无法弄清楚在 iOS 中访问三个广告频道的确切方法。

提前谢谢你。

【问题讨论】:

没有公共 API 可以为您提供此信息。 有这方面的消息吗? 【参考方案1】:

一般来说,Apple 不会披露此类信息。没有公共 API 可用于开发 IOS 的核心组件。由于 android 是一个开源平台,我们可以找到许多用于访问传感器和每个组件的源代码,但 Apple 并非如此。此外,这可能是出于安全原因,苹果一直保持到今天。

【讨论】:

以上是关于在 iOS 中单独访问所有三个 BLE 广告通道的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上的 BLE 广告和 CBAdvertisementDataLocalNameKey 大小

在 Swift 中的 iOS BLE 扫描中提取广告数据 [kCBAdvDataManufacturer] 的内容

iOS 在后台模式下从广告中省略制造商数据

BLE 扫描记录 - 未获取所有广告数据(服务数据)

BLE iOS Nativescript:广播数据失败

BLE低功耗蓝牙的广播内容