IBeacon :在后台检测多个信标

IBeacon : Detect multiple beacons in background

作为我项目的一部分,我需要在悉尼或墨尔本等大城市部署大量信标。当用户经过这些信标之一时,我的应用程序应执行特定操作。我计划让我的舰队中所有信标的 UUID 保持相同,根据城市站点有 1-20 个主要值的范围,并且每个信标有不同的次要值。

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

为了测试,我已经使用以下值配置了我的信标 - UUID-ABCD1234-DCBA-4321-5555-666677778888 少校 - 1 未成年人 - 1

我当前的区域定义代码如下所示 - 区域 region = new Region("backgroundRegion1", Identifier.parse("ABCD1234-DCBA-4321-5555-666677778888"),Identifier.parse("1"), Identifier.parse("1"));

相反,我希望它被类似这样的东西检测到(我试过了,但似乎不起作用)- 区域 region = new Region("backgroundRegion1", Identifier.parse("ABCD1234-DCBA-4321-5555-666677778888"),null, null);

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

我正在研究具有类似信标实现的解决方案(一个 UUID,许多 major/minors)。我有几个可能的建议:

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

注意事项

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

就个人而言,我最依赖上面 link 中 David 的解决方案