【问题标题】:The behavior of iBeacon detection when multiple beacons have the same IDs多个信标具有相同 ID 时 iBeacon 检测的行为
【发布时间】:2016-04-04 08:22:16
【问题描述】:

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

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

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

它们都会 ping 相同的信息,因此理论上至少应用只会看到来自看似相同的设备的大量 ping,除非系统中的某个地方 MAC 地址也将起到识别来源的作用。

感谢您对此提出的任何实用建议。我们说的可能是数百个分布在移动车辆中的信标,每辆车不止一个。

问候, 安德斯

【问题讨论】:

    标签: android ios ibeacon altbeacon


    【解决方案1】:

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

    • iOS CoreLocation 上,范围回调将在 beacons 数组中包含多个具有相同标识符的信标实例。在内部,操作系统通过 Mac 地址将它们区分开来,但无法使用 Core Location 访问此 Mac 或任何其他代理。因此,虽然您可以知道周围有多少个信标并获得每个信标的 rssi 和距离估计值,但您无法分辨哪个信标是哪个。

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

    【讨论】:

    • 关于 iOS 的要点。是否可以同时扫描 iBeacon 和 BLE 设备,并通过比较 iBeacon 的 RSSI 来匹配对应的 BLE 设备?
    • 你可以尝试一下,但这并不是万无一失的,因为两个设备可以有相同的 RSSI。
    • 感谢您提供有关 iOS 的说明。我设置了两个相同的信标并将它们放置在不同的距离,突然我的应用程序一直检测到不同的接近度。我现在采用运行(某种)平均值(Math.floor((proximity + saved.proximity)/ 2),接近度级别转换为 1 - 3,因此每个 ID 只能看到一个信标。当我使用 Cordova 包装器时对于这个库,我认为我无法访问上述设置,也无法访问 iOS 上的“准确性”。它的行为类似于库。
    • @davidgyoung 谢谢你的回答。在 iOS 中是否可以同时扫描具有相同 MAC 但不同 UUID、主要、次要的多个信标?似乎它们被表示为一个信标,随着时间的推移而变化的标识符。
    • @andrey,我也观察到了同样的情况。 iOS CoreLocation 要求信标 MAC 地址是不同的,以便同时扫描。您可以使用 CoreBluetooth 和非 iBeacon 类型(如 AltBeacon 或 Eddystone)完成您描述的任务。
    【解决方案2】:

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

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

    如果所有信标都绑定到后端的相同数据,那很好。但是,此解决方案使您可以选择稍后为特定信标设置不同的消息,如果您愿意的话。如果您想限制手机在遇到第一个也可以的信标后拨打的网络电话,您可以在最近遇到信标并且没有离开场地后使用不同的功能。

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

    【讨论】:

    • 我知道这一点,但很难说服甚至不想更改默认设置的客户。我的 CMS 允许将多个 ID 映射到一个站点,所以这不是问题。
    • 我有很多计时器来确保只有在接近之间有稳定过渡时才调用 CMS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多