我有一个监控iBeacons进入/退出事件的应用程序。当它收到一个事件时,它会将事件转发给服务器。在用户最小化和/或强制关闭它之后,应用程序继续工作(例如,服务器继续接收更新)(因此它在后台正常工作)。
然而,在手机远离任何iBeacons足够长的时间(例如,过夜)并再次靠近iBeacons后,该应用程序停止接收进入/退出更新,直到用户再次打开它(带来它)进入前景)。如果用户在此时最小化/关闭应用程序,则更新将继续在后台正常运行。
我需要做些什么才能在后台运行长时间监控更新? iOS一段时间后会停止后台监控吗?
注意:我正在运行iOS 9.3.1
答案 0 :(得分:3)
当应用程序被授予“始终”位置访问权限时,iOS应该能够在后台无限期地检测到信标。
这是我听过的第二个报告,所以我想知道这是一个新的iOS版本中的错误还是更改。报告您的iOS版本会很有帮助。
一种可能性:网络呼叫可能被阻止,而不是信标检测。您可以通过将NSLog语句添加到:
来测试此假设添加上述内容后,请重现您在服务器上看不到事件的问题。然后将手机连接到XCode并转到设备,查看最近的NSLog输出以查看:
如果您发现网络连接失败,您可以通过请求其他后台网络权限来纠正这种情况。
编辑:在未进行检测时,您可能尝试的另一件事是在前台启动不同的信标扫描仪应用,例如Locate。这将强制执行操作系统蓝牙扫描,它可能会启动应用程序的检测。如果这样可行,它会告诉您蓝牙扫描已在手机中暂停。