当我的应用程序是否在后台时,我可以为信标测距并发送位置更新 运行 吗?

Can I range for beacons and send location updates when my app is in the background or not running?

我一直在使用 IBM Presence Insights 记录用户移动设备的室内位置。我正在使用信标基础设施并使用 Presence Insights SDK 构建应用程序。

我的 app/phone 信标范围是否会向 Presence Insights 发送位置更新,即使应用程序在后台运行?如果应用不是 运行 怎么办?我需要知道 Android 和 iOS 的这种行为。

iOS and Android 的 Presence Insights SDK 不包含任何特定于 运行 在后台状态下运行您的应用程序的代码 - 您编写应用程序的方式将决定它们是否以及如何运行运行 在后台。

这里有一些关于 iOS and Android on setting up background processes, as well as the docs for the mobile application SDKs 的有用信息。有很多选择。

一句至理名言 - 如果您不小心设置后台进程,您可能会耗尽某人的电池。

希望对您有所帮助

做了一些调查。不同操作系统的后台测距能力不同。

对于iOS:

  • iOS 可以使用 "region" 监控在后台监控信标。这与特定信标的测距不同,因为它监视的是大区域/信标组。此方法几乎不会很快耗尽 phone 的电池,并为用户提供更多隐私。这是从 Apple 构建基于位置的应用程序的推荐方法,也是我们在 SDK 中所做的。

  • 区域监控在应用程序处于后台、前台或完全被杀死时起作用,请参阅此link了解更多信息:https://community.estimote.com/hc/en-us/articles/203356607-What-are-region-Monitoring-and-Ranging-

  • 上面的 link 讨论了限制,最值得注意的是,用户必须允许 "Access your location even when not using the app"
  • 当 phone 未使用时,或者应用程序在后台运行时,SDK 将最多每 15 分钟监控一次这些信标范围(这似乎因 iOS 设备而异,操作版本级别等)
  • 当 phone 正在使用中,并且在前景中时,它将不断地为信标测距(应用程序开发者不需要做任何事情来启动这个过程。)
  • (对我来说,这意味着有人可以进入和离开场地而根本不使用他们的 phone。如果他们在 15 分钟内这样做,他们将根本不会被发现。 )
  • 所有这些监控只有在用户下载了应用程序并且应用程序开发人员拥有 "started" PI 信标传感器的情况下才能进行。这是必需的,以便 PI 可以获取与组织关联的信标列表,并使用 phone OS 注册这些信标区域。因此,我们建议应用程序开发人员在应用程序启动后立即启动信标感应。
  • 我不确定此监控是否会在 phone 重新启动后继续存在。

对于Android:

  • Android没有操作系统提供的区域监控的概念。
  • 我们创建了一个后台进程,它使用 scanPeriod(扫描多长时间)和 betweenScanPeriod(唤醒和扫描 BLE 之前等待多长时间)
  • 目前,如果用户打开 android 应用程序,我们将创建此后台进程,每 5 分钟 运行 并扫描 BLE
  • 目前,由于这些值,这会非常耗电
  • 如果用户强制关闭应用程序,它会关闭后台进程,因此不会进行扫描。我们正在研究通过在应用程序关闭时重新启动后台服务来解决此问题的方法
  • Android 后台进程无法在 phone 重新启动后继续存在,因此如果用户重新启动 phone 并且没有打开应用程序,它将永远不会扫描信标

我们正在努力适当地记录所有这些。目前在这个领域有很多积极的发展,这使得保持最新状态变得困难。