在后台测距多个信标并确定每个信标在后台的停留时间

Ranging multiple beacons in background and determine dwell time for each of the beacon in background

我在我的 BLE 项目中使用 altbeacon 库。我想为信标启用后台扫描。由于我不希望用户一直打开蓝牙,因此我使用用户的 GPS 位置来确定是否需要打开蓝牙以在后台扫描信标。我正在使用 Bootstrap 通知程序触发 didEnterRegion,然后使用 RangeNotifier 确定设备的 Major、Minor 和距离值。如果用户在 2-5 米的距离停留 30 秒,我想触发一个事件。我怎样才能从后台做到这一点?目前使用 10 秒扫描和 5 分钟暂停的默认设置可以帮助我监控由我的 UUID 定义的区域,但是当对主要、次要和距离进行测距时,扫描仅持续 1 秒,这也无法帮助我看到周围的所有信标因为我使用的是 ~2hz 频率。下一次扫描仅在 5 分钟后进行。我对将 5 分钟的时间减少到 10 秒持怀疑态度,因为我不希望用户在将蓝牙打开太久的情况下感觉该应用正在消耗电池。

最后我的问题是:

  1. 如何在后台测距时增加扫描周期或扫描频率,以便我可以看到该区域周围的所有信标?
  2. 能不能获取beacon退出区域调用didExitRegion时的UUID、major、minor和驻留时间?
  1. 我会添加自定义逻辑来控制后台模式。进入地理围栏后在前台模式停留30秒左右,然后进入后台模式。

  2. 如果您的监控区域定义了 major 和 minor,您可以在区域退出时从 id 2 和 id3 中读取这些字段。没有自动跟踪停留时间,但您可以在您的应用中设置进入区域的时间戳,并从您的应用在区域退出时记录的另一个时间戳中减去它。