iBeacon技术:理解minor、major和UUID

5
我似乎无法弄清楚在检测iBeacon时主要值和次要值的相关性或重要性。 当我注册和配置我的Gimbal信标时,我为UUID、major和minor给它一组特定的值,然后当我使用我的cordova iBeacon插件时,只有在我指示它查找这些确切参数时才能检测到我的信标。
对我来说,似乎只有uuid对于检测信标至关重要。 然而,除非我将这3个准则的每个值逐个匹配,否则它们不会被我的应用程序检测到。
有人能够阐明信标检测中主要值和次要值的相关性吗?是否确实需要我的代码明确指示插件查找与所有这些值匹配的信标。
希望这篇文章有意义...... iBeacon检测有太多的移动部件,学习它已经把我的大脑打成了一个椒盐脆饼。
2个回答

12
iBeacon协议是这样实现的,以确保每个信标都是唯一的。 如果您拥有大规模的信标部署(比如在全国各地的所有商店),则希望以这种方式设置标识符,以便您可以单独标识信标。 一个示例部署如下: 所有信标UUIDS:1234 ... 波士顿所有百货商店:Major = 1 芝加哥所有百货商店:Major = 2 Minor可以按过道或部分变化。 那么,如果我检测到信标UUID 1234 ...,Major 1 Minor 8,我就知道它映射到波士顿商店服装区。 这只是一个示例(并且有点糟糕),但基本上标识符的级别只是更大的保险,确保检测到的信标是您实际想要的信标。 当监视iBeacons时,您实际上可以在每个不同的标识符级别进行监视,因此您可以监视具有UUID的所有信标,具有UUID和Major的所有信标,或具有UUID,Major和Minor的所有信标(理想情况下只需一个信标)

明白了 - 谢谢。这就是为什么主版本号和次版本号是可选的原因。 - Kinglish
是的,这一切都关乎特定级别。在上面的例子中,你可能想要扫描UUID直到找到major,然后你就知道你在哪个城市了,接着开始寻找UUID和major,然后你就可以得到具体的信标,最后当你退出所有这些信标时,再回到UUID监测。 - arc4randall

6
这个声明很关键:

在我看来,仅uuid对于检测beacons是至关重要的。然而,如果我不逐一匹配这三个标准的值,我的应用程序就无法检测到它们。

使用原始iOS API和Android Beacon库,只提供UUID即可匹配beacons。您不需要指定major和minor来检测beacons。 如果您发现了不同,请检查运行的代码、所使用的框架或两者都有问题。
major和minor的目的是为了将标识符空间细分为逻辑目的。如果您只根据UUID或UUID和major进行匹配,则可以通过检查minor值来根据检测到的beacon采取不同的操作。

我在我的代码中指定值,认为它是某种范围...只有当我匹配我正在搜索的值时才能成功。此时,我只想在构建动态方面之前检测和响应硬编码的值。我还没有尝试省略值,现在我理解了它们的目的。 - Kinglish
如果我不知道我的信标的UUID怎么办? - user1261710
如果您不知道UUID,就无法使用iOS API来检测它。但在Android上可以。如果您只关心Android,则在区域定义中将UUID设为空,它将匹配所有信标。如果您关心iOS,则必须提供UUID,否则它将无法正常工作。如果您只需要找出UUID,请使用带有现成信标扫描器的Android设备扫描信标并找到UUID。 - davidgyoung

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