IBeacon:在后台检测多个信标

时间:2016-10-21 04:05:32

标签: bluetooth bluetooth-lowenergy ibeacon ibeacon-android altbeacon

作为我项目的一部分,我需要在悉尼或墨尔本这样的大城市部署大量信标。当用户通过其中一个信标时,我的应用应执行特定操作。我计划在我的机队中为所有信标保持UUID相同,根据城市站点提供1-20个主要值的范围,并为每个信标设置不同的次要值。

我已经完成了iBeacon的背景检测教程,并且已经使用单个beacon成功测试过。但我感到困惑的是,我必须在我的代码中为每个信标定义一个区域。

为了进行测试,我使用以下值配置了我的信标 - UUID - ABCD1234-DCBA-4321-5555-666677778888 专业 - 1 未成年人 - 1

我当前定义代码的区域看起来像 - Region region = new Region(" backgroundRegion1",Identifier.parse(" ABCD1234-DCBA-4321-5555-666677778888"),Identifier.parse(" 1") ,Identifier.parse(" 1"));

相反,我希望用这样的东西(我尝试过并且似乎不起作用)来检测它 - Region region = new Region(" backgroundRegion1",Identifier.parse(" ABCD1234-DCBA-4321-5555-666677778888"),null,null);

考虑到我将拥有大量的信标,我只想避免复制粘贴相同的代码行。

1 个答案:

答案 0 :(得分:1)

我正在开发一个具有类似信标实现的解决方案(一个UUID,许多主要/未成年人)。我有一些可能的建议:

  1. 你可以这样做How can I get beacon's data (UUID,Major,Minor) in `didEnterRegion` in altbeacon library?
  2. 您可以在didEnterRegion()调用中使用区域ID(" backgroundRegion1"在您的示例中)来分隔信标。这假设区域ID足够独特,可以正确触发应用程序行为
  3. 需要注意的一些事项

      如果用户同时处于多个信标的范围内,
    1. didEnterRegion()似乎会被多次调用。
    2. didExitRegion()仅在用户超出所有信标范围时才被调用
    3. 只要用户在该信标范围内,上述链接中的测距解决方案就会触发回调,因此您需要自行进行过滤
    4. 就个人而言,我最依赖上面链接中的David的解决方案