IBeacon后台监控

cy8*_*unk 0 bluetooth ios ibeacon swift

我正在构建一个应用程序,其核心功能需要信标监控。确切地说,我需要将具有特定 UUID 的每个信标的有效负载(最小范围)值添加到核心数据列表中(如果我可以设置信标需要保持在可达范围内的特定时间阈值,那就更好了在将其添加到列表之前)。我一直在寻找解决方案,但版本有点混乱,我无法真正判断我需要的是否可行。我找到了这篇文章,根据该文章,我可以在后台触发事件,或者使用后台模式。我的问题是这是否仍然正确,如果是这样,是否有人拥有有关使用背景模型与 IBeacon 结合使用的资源。

来自德国的问候!

dav*_*ung 8

Apple 限制 iOS 应用程序在后台“测距”信标的持续时间。截至 2020 年 4 月,情况确实如此,而且过去 5-6 年的情况基本没有变化。

一些澄清:

  1. 只要用户向应用程序授予“始终定位”权限,信标监控就不会在后台受到限制。但信标监控只提供“进入”和“退出”事件。 当您正在寻找的任何信标首次出现时,它会为您提供一个进入事件;当您正在寻找的最后一个信标消失时,它会为您提供一个退出事件。监控不会告诉您有关单个信标的估计距离或信号强度的任何信息。

  2. 信标测距可让您每秒获得更新,其中包含所有可见信标的列表、每个信标的信号强度和距离估计。 如果距离估计低于某个阈值,您可以轻松编写逻辑以写入数据库。

  3. iOS 上的信标测距在后台受到限制。首先,用户必须向您的应用授予“始终定位”访问权限。即使这样,在应用程序进入后台后,或者信标在进入后台后首次出现时,您的测距时间也被限制为大约 5-10 秒。

  4. 您只需按照我的博客文章运行后台任务即可将 (3) 中提到的 5-10 秒延长至 180 秒。

  5. 如果您在 Info.plist 中声明“位置”后台模式,使用如 (4) 中所述的后台任务,并且使用 CoreLocation 请求位置更新(仅具有 3 公里分辨率的粗略位置更新),则可以进一步无限期地延长 180 秒可以很好地实现此目的,并通过关闭 GPS 来节省电池。)

  6. (5) 的一个问题是,如果您计划将应用程序提交到 App Store,并且您没有为在后台使用位置提供明显的面向用户的好处,则可能会导致您的应用程序被拒绝。如果您确实有充分的理由,或者您打算在 App Store 之外分发应用程序(例如公司企业应用程序),那么这将很好地工作。

  7. (5) 的第二个问题是一直进行测距可能会导致电池电量严重耗尽。您可能需要编写额外的逻辑来在不需要时停止这种持续的背景范围,以节省电池。

这无疑是令人困惑和复杂的。但最重要的是,有一些方法可以无限地确定信标的范围以满足许多用例。你只需要克服一些困难就能实现这一目标。