iBeacon可以具有数据负载吗?

5

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

  • 9个字节的 iBeacon 前缀
  • 16个字节的 UUID
  • 2个字节的 Major
  • 2个字节的 Minor
  • 1个字节的 TX power

话虽如此,是否有任何因素会阻止信标发送广告 iBeacon 数据包来唤醒手机应用程序,并作为 BLE 数据包的一部分传输实际数据内容?在发送/传输其他数据时,需要进行很多握手吗?

信标是否有其他方式来传输数据?我的一个主要担忧是我的信标被仿造以篡改我试图收集的数据。我希望能够在 iBeacon 数据包中传输一些数据,以便限制仿冒。

这种做法可行吗?


在iOS中不可能实现 - Core Location和Core Bluetooth无法访问原始广告。在其他平台上或使用BLE外设而不是iBeacon可能是可能的。 - Paulw11
1个回答

3
以下是几种可能的方案:
  • 在iBeacon传输达到最大广告长度之前,您可以在其末尾添加一个额外的数据字节。但是,由于苹果阻止读取iBeacon广告的原始数据,因此iOS设备无法读取这个字节。这将适用于Android/Mac/Linux。

  • 您可以交错第二个广告,其中包含大部分数据字段,并使用共同标识符(如minor)将两者对齐。分配给对齐广告的字节数越多,可用于数据的字节数就越少。您不能使用mac来对齐它们,因为在iBeacon传输中,iOS无法读取它们。

  • 您可以通过GATT使信标可连接,并使用GATT属性读取数据字段。但是,当连接时,信标将停止广告。这会限制吞吐量和可靠性。

所有这些选项都需要您构建一个自定义的BLE信标,以进行多个广告。这不是一件轻松的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接