0

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

即使应用程序在后台,我的应用程序/电话是否会覆盖信标并向 Presence Insights 发送位置更新?如果应用程序没有运行怎么办?我需要知道 Android 和 iOS 的这种行为。

4

2 回答 2

2

做了一些调查。对于不同的操作系统,后台范围的能力是不同的。

对于 iOS:

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

  • 当应用程序处于后台、前台或完全被杀死时,区域监控工作,请参阅此链接了解更多信息:https ://community.estimote.com/hc/en-us/articles/203356607-What-are-region-监测和测距-

  • 上面的链接讨论了限制,最值得注意的是,用户必须允许“即使不使用应用程序也可以访问您的位置”的权限
  • 当手机未使用或应用程序处于后台时,SDK 将最多每 15 分钟监控一次这些信标范围(这似乎因 iOS 设备、操作版本级别等而异)
  • 当手机在使用中并且在 FOREGROUND 中时,它将持续为信标测距(应用程序开发人员不需要做任何事情来启动这个过程。)
  • (对我来说,这意味着有人可以进出场地,根本不使用他们的手机。如果他们在 15 分钟内这样做,他们根本不会被发现。)
  • 只有当用户下载了应用程序并且应用程序开发人员“启动”了 PI 信标传感器时,才能进行所有这些监控。这是必需的,以便 PI 可以获取与组织关联的信标列表并将这些信标区域注册到手机操作系统。因此,我们建议应用程序开发人员在应用程序启动后立即启动信标感应。
  • 我不确定这种监控是否会在手机重启后继续存在。

对于安卓:

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

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

于 2016-01-12T19:55:06.043 回答
0

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

这是iOSAndroid设置后台进程的一些有用信息,以及移动应用程序 SDK 的文档。有很多选择。

一句智慧的话 - 如果您不小心设置后台进程,您可能会杀死某人的电池。

希望这可以帮助

于 2016-01-11T22:29:17.043 回答