【问题标题】:Can I range for beacons and send location updates when my app is in the background or not running?当我的应用程序在后台或未运行时,我可以确定信标范围并发送位置更新吗?
【发布时间】:2016-01-11 21:33:59
【问题描述】:
我一直在使用 IBM Presence Insights 记录用户移动设备的室内位置。我正在使用信标基础架构并使用 Presence Insights SDK 构建应用程序。
即使应用在后台,我的应用/手机是否会覆盖信标并向 Presence Insights 发送位置更新?如果应用程序没有运行怎么办?我需要知道 Android 和 iOS 的这种行为。
【问题讨论】:
标签:
ibm-cloud
estimote
indoor-positioning-system
presenceinsights
【解决方案1】:
做了一些调查。对于不同的操作系统,后台范围的能力是不同的。
对于 iOS:
iOS 可以使用“区域”监控在后台监控信标。这与针对特定信标的测距不同,因为它改为监视一个大区域/一组信标。这种方法几乎不会很快耗尽手机的电池电量,并为用户提供更多隐私。这是从 Apple 构建基于位置的应用程序的推荐方法,也是我们在 SDK 中所做的。
当应用程序处于后台、前台或完全被杀死时,区域监控会起作用,有关更多信息,请参阅此链接:https://community.estimote.com/hc/en-us/articles/203356607-What-are-region-Monitoring-and-Ranging-
- 上面的链接谈到了限制,最值得注意的是,用户必须获得“即使不使用应用也能访问您的位置”的权限
- 当手机未使用或应用处于后台时,SDK 最多每 15 分钟监控一次这些信标范围(这似乎因 iOS 设备、操作版本级别等而异)
- 当手机在使用中并且在 FOREGROUND 中时,它将持续为信标进行测距(应用程序开发人员不需要执行任何操作来启动此过程。)
- (对我来说,这意味着有人可以进出场地,根本不使用他们的手机。如果他们在 15 分钟内这样做,他们根本不会被检测到。)
- 只有在用户下载了应用程序并且应用程序开发人员“启动”了 PI 信标传感器后,才能进行所有这些监控。这是必需的,以便 PI 可以获取与组织关联的信标列表并将这些信标区域注册到手机操作系统。因此,我们建议应用程序开发人员在应用程序启动后立即启动信标感应。
- 我不确定这种监控是否能在手机重启后继续存在。
对于安卓:
- Android 没有操作系统提供的区域监控的概念。
- 我们创建了一个后台进程,它使用 scanPeriod(扫描多长时间)和 betweenScanPeriod(在唤醒和扫描 BLE 之前等待多长时间)
- 目前,如果用户打开 android 应用,我们将创建此后台进程,该进程将每 5 分钟运行一次并扫描 BLEs
- 目前,由于这些值,这会严重耗尽电池
- 如果用户强制关闭应用程序,它将关闭后台进程,因此不会发生扫描。我们正在寻找通过在应用关闭时重新启动后台服务来解决此问题的方法
- Android 后台进程无法在手机重启后继续存在,因此如果用户重启手机但未打开应用,它永远不会扫描信标
我们正在努力适当地记录所有这些。目前该领域有很多积极的发展,这使得保持最新状态变得困难。