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