iBeacon后台监控停止工作

3
我有一个监视iBeacon进入/退出事件的应用程序。当它接收到事件时,它会将事件转发到服务器。即使用户最小化或强制关闭它(因此在后台正常工作),该应用程序仍然可以继续工作(例如,服务器仍然可以接收更新)。
然而,当手机远离任何iBeacons一段时间(例如,过夜)并再次接近iBeacons时,该应用程序将停止接收输入/退出更新,直到用户再次打开它(将其带到前景中)。如果此时用户最小化/关闭应用程序,则更新将在后台继续正常工作。
我需要做些什么来允许长时间运行的后台监视更新吗?经过一段时间后,iOS是否停止后台监视?
注意:我正在运行iOS 9.3.1

你是否要求用户进行此操作:使用此服务需要用户授予“始终”授权。 - k1th
是的,我正在使用“始终”授权。我相信这正常工作,因为在用户最小化/强制关闭应用程序几个小时后,我仍然观察到更新。 - mattnedrich
1个回答

3

iOS应用程序在获得"始终允许访问位置"权限后,应能够无限期地在后台检测信标。

这是我听到的第二份报告,因此我想知道这是一个错误还是新版iOS中的更改。报告您的iOS版本将会很有帮助。

一种可能性是网络调用可能被阻止,而不是信标检测。您可以通过向以下语句添加NSLog语句来测试此假设:

  1. 信标检测日志
  2. 成功和不成功连接到服务器的日志。

一旦您添加了上述内容,请再现您在服务器上看不到事件的问题。然后将手机连接到XCode并转到“设备”,查看最近的NSLog输出以了解:

  1. 是否有指示检测到信标的行?
  2. 服务器连接是否成功?

如果发现是网络连接失败,您可以通过请求额外的后台网络权限来纠正这种情况。

编辑:当未检测到信标时,您可以尝试启动另一个前台信标扫描器应用程序(例如Locate)。这将强制进行操作系统蓝牙扫描,并可能启动您的应用程序检测。如果有效,这会告诉您蓝牙扫描已在手机上暂停。


谢谢您的建议,我会尝试一下。让我怀疑这是网络问题的一件事是,当它停止工作时,我甚至看不到建议的应用程序图标出现在锁定屏幕上。我的理解是,如果一个应用程序检测到它正在监视的信标,iOS将在锁定屏幕的左下角显示该应用程序的图标。 - mattnedrich
同意你应该怀疑,因为你看不到图标。请查看我问题的编辑以获取其他建议。此外,请发布您的iOS版本。 - davidgyoung
我尝试启动了一个不同的信标扫描应用程序 - 我们正在使用Estimote信标,所以我启动了Estimote扫描器应用程序。它能够在Estimote应用程序中看到信标,但是我的应用程序没有唤醒,并且继续没有接收到任何信标更新,直到我再次启动它。我很乐观这可能会起作用,但不幸的是它没有。 - mattnedrich
6
我可以确认,在最新的iOS版本(iOS 9.3)或更高版本中存在问题。 iBeacon的位置监测在一些天能够正常工作,然后突然停止。这使得该功能目前几乎无法使用。 - holtmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接