多个信标具有相同ID时iBeacon检测的行为

The behavior of iBeacon detection when multiple beacons have the same IDs

我参与了一个业务案例,出于部署简单的原因,这个问题迟早会弹出:

对于 iOS,将使用集成的 iBeacon 支持。对于 Android,将使用 AltBeacon 库(由 Radius 提供)。

如果给定 content/interaction 的所有信标彼此靠近并可能重叠,共享相同的 UUID、主要 ID 和次要 ID,是否存在任何基本问题和陷阱?

他们都会 ping 相同的信息,所以理论上至少应用程序只会看到来自看似相同设备的大量 ping,除非系统中的某个地方也 MAC 地址将发挥作用确定来源。

感谢您就此提出的任何实用建议。我们可能正在谈论数百个信标散布在行驶的车辆中,每辆车不止一个。

此致, 安德斯

你永远不应该有 2 个具有完全相同的 UUID、Major 和 Minor 值的信标。有 2^128 个可能的 UUID,65,535 个可能的专业和 65,535 个可能的未成年人。任意两个信标相同的概率应该基本为零

如果您需要用多个信标识别特定区域。给他们所有相同的 UUID。那么也许你可以让同一楼层的所有信标具有相同的主调,然后根据信标的不同接触点改变次要信号。

如果所有信标都绑定到您后端的相同数据,那很好。但是,如果您愿意,此解决方案为您提供了稍后为特定信标设置不同消息的选项。如果你想限制 phone 在遇到第一个信标后发出的网络调用也很好,你可以在最近遇到一个信标并且没有离开场地后拥有不同的功能。

在不知道您的具体用例的情况下,这是我能提供的最佳见解,但 iBeacon 协议信标绝不能具有相同的所有 3 个值。

虽然典型的最佳做法是为每个信标提供不同的唯一标识符,但在某些用例中,为多个物理信标提供相同的标识符会有所帮助。 iOS 和 Android 都可以正确处理范围内多个信标具有相同标识符的情况, 但了解其工作原理很重要:

  • iOSCoreLocation 上,测距回调将在 [=10] 中包含多个信标实例 =] 具有相同标识符的数组。在内部,OS 通过 Mac 地址使它们不同,但无法使用核心位置访问此 Mac 或任何其他代理。因此,虽然您可以分辨周围有多少个信标并获得每个信标的 RSSI 和距离估计值,但您无法分辨哪个信标是哪个。

  • 使用Android信标库,默认所有具有相同标识符的信标合并为一个,将他们的 RSSI 测量值平均并用于创建单个距离估计。但是,您可以通过设置 Beacon.setHardwareEqualityEnforced(true)将其配置为与 iOS 相同的行为方式。当你这样做时,每个信标将通过 Mac 地址保持不同,并且与 iOS 不同,你还可以使用 beacon.getBluetoothAddress().

    [= 阅读 Mac 31=]