0

我想使用 Estimote 监控一系列信标。例如,假设 ("rid", "uuid", , ) 标识了一系列信标,其中我的应用程序使用的所有信标共享相同的“rid”和“uuid”。我也拥有许多品牌,每个品牌都可以拥有多个商店。

这个应用程序将出售给许多品牌,我想使用这样的东西:

private static final Region ALL_STORES_REGION = new Region("rid", "uuid", BRAND_ID, null);
beaconManager.startMonitoring(ALL_STORES_REGION);

然后,当客户离开某个商店时接收通知:

beaconManager.setMonitoringListener(new BeaconManager.MonitoringListener() {
        @Override
        public void onEnteredRegion(Region region, List<Beacon> beacons) {
            // do nothing
        }

        @Override
        public void onExitedRegion(Region region) {
            listener.onCustomerLeaving(region.getMinor());
        }
    });

这就是我现在使用的,并且工作正常。问题是,由于我使用 null 作为 Region 中的最后一个值(以便捕获该品牌的任何商店),onEnteredRegion 方法返回的区域返回 null,我无法识别特定商店。

我想到了两种可能的解决方案:在进入时保存信标返回列表,并在客户离开时检索商店的 id。(如果范围内有多个信标,这可能很危险)

或者,使用商店 ID 监控多个特定区域。(这将涉及了解所有商店的 ID,因此也不是理想的解决方案)

如果有任何方法可以获得触发 onExitedRegion 方法的实际 Beacon 或任何其他更好的解决方案,我正在徘徊。

谢谢!

4

1 回答 1

1

你有两个选择:

  1. 当您收到 onEnteredRegion 回调时开始测距。通过测距,您可以找回您周围的信标,以便您识别商店/品牌。

  2. 看一下 onEnteredRegion 中的第二个参数(信标)。根据文档

beacons - List of beacons that triggered onEnteredRegion event. This list may not reflect all beacons around that are matching given region.

您可以使用此信息来识别商店/品牌。

于 2014-10-14T19:09:22.947 回答