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