iBeacon 可以有数据负载吗

Posted

技术标签:

【中文标题】iBeacon 可以有数据负载吗【英文标题】:Can an iBeacon have a data payload 【发布时间】:2015-03-25 03:14:13 【问题描述】:

我知道 iBeacon 的定义是它正在传输的广告数据包的固定规范:

9 字节 iBeacon 前缀 16 字节 UUID 2 字节主要 2 字节次要 1 字节发射功率

话虽如此,是否有任何东西可以阻止信标发送广告 iBeacon 数据包以唤醒手机应用程序以及将实际数据内容作为 BLE 数据包的一部分传输?发送/传输额外数据是否需要大量握手?

信标还有其他方式传输数据吗?我最大的担忧之一是欺骗我的信标以伪造我试图收集的数据。我希望能够与 iBeacon 数据包一起传输一些数据,这样我就可以限制欺骗。

这样的事情是否可行?

【问题讨论】:

这在 ios 中是不可能的 - Core Location 和 Core Bluetooth 不提供对原始广告的访问。它可能在其他平台上或使用 BLE 外围设备而不是 iBeacon。 【参考方案1】:

几种可能性:

您可以在 iBeacon 传输达到其最大广告长度之前添加一个额外的数据字节。不过,iOS 设备无法读取此字节,因为 Apple 会阻止读取 iBeacon 广告的原始数据。它可以在 android/Mac/Linux 上运行。

您可以将第二个广告与大部分数据字段交错,并将这两个广告与一个常见的标识符(如未成年人)对齐。分配给排列广告的字节越多,用于数据的字节数就越少。您不能使用 mac 将它们连接起来,因为这在 iOS 中对于 iBeacon 传输是不可读的。

您可以通过 GATT 使信标可连接,并读取具有 GATT 属性的数据字段。但是,连接后,信标将停止广告。这限制了吞吐量和可靠性。

所有这些选项都要求您构建一个自定义 BLE 信标来执行多个广告。这不是一项微不足道的工作。

【讨论】:

以上是关于iBeacon 可以有数据负载吗的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Android 中将 iBeacon 与附近消息一起使用吗?

iBeacons:与信标有关吗?

我们可以在后台启动一个 iBeacon 发射器吗?

机场室内导航,可以实现吗?

CLLocationManager 和 iBeacons:requestState(for: region) 有必要吗?

您可以在退出区域时对 ibeacon 通知应用时间限制吗?