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

Android 多个信标具有相同ID时iBeacon检测的行为,android,ios,ibeacon,altbeacon,Android,Ios,Ibeacon,Altbeacon,我参与了一个商业案例,出于部署简单性的原因,这迟早会成为一个问题: 对于iOS,将使用集成的iBeacon支持。对于Android,将使用AltBeacon库(按半径) 如果给定内容/交互的所有信标彼此非常接近,并且可能重叠,共享相同的UUID、主ID和次ID,是否存在任何基本问题和问题 他们都会ping相同的信息,因此理论上至少应用程序会看到来自同一个设备的大量ping,除非系统中的某个地方也有MAC地址在识别源中起作用 我很感谢你给我的建议。我们可能会谈论数百个分布在移动车辆中的信标,每辆车

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

对于iOS,将使用集成的iBeacon支持。对于Android,将使用AltBeacon库(按半径)

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

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

我很感谢你给我的建议。我们可能会谈论数百个分布在移动车辆中的信标,每辆车不止一个

问候,,
Anders

您不应该有两个UUID、MARGY和MINORY值完全相同的信标。有2^128个可能的UUID、65535个可能的专业和65535个可能的未成年人。任何两个信标相同的概率应基本为零

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

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


在不知道您的特定用例的情况下,这是我所能提供的最好的洞察力,但iBeacon协议信标的3个值永远不应该都相同。

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

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

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


关于iOS的要点。是否可以同时扫描iBeacon和BLE设备,并通过比较其RSSI将iBeacon与其对应的BLE设备相匹配?您可以尝试一下,但这并不是万无一失的,因为两个设备可以具有相同的RSSI。感谢您关于iOS的说明。我设置了两个相同的信标,并将它们放置在不同的距离,突然我的应用程序一直检测到不同的近距。我现在取一个运行(类)平均值(Math.floor((接近+保存的接近)/2),接近级别转换为1-3,因此每个ID只能看到一个信标。当我使用Cordova包装器用于此库时,我认为我无法访问提到的设置,也无法访问“准确性”在iOS上。它的行为类似于库。@DavidYoung谢谢你的回答。在iOS中,是否可以同时扫描具有相同MAC,但不同UUID、主、次的多个信标?它们似乎表示为一个信标,标识符随时间变化。@andrey,我也观察到了同样的情况。iOS CoreLocation需要信标MAC上的地址必须是不同的,以便进行同步扫描。使用CoreBooth和AltBeacon或Eddystone等非iBeacon类型,您可以完成您所描述的任务。我知道这一点,但很难说服客户不想更改默认设置。我的CMS允许将多个ID映射到一个站点,因此它不是专业的我有很多定时器来确保CMS只有在近邻之间有稳定的转换时才被调用。