ios - iBeacon 后台监控停止工作

标签 ios ios9 core-location ibeacon

我有一个监控 iBeacons 进入/退出事件的应用程序。当它接收到事件时,它会将事件转发给服务器。在用户最小化和/或强行关闭应用程序(因此它在后台正常工作)后,该应用程序继续工作(例如,服务器继续接收更新)。

但是,在手机离开任何 iBeacons 足够长的时间(例如,一夜之间)并再次靠近 iBeacons 后,应用程序将停止接收进入/退出更新,直到用户再次打开它(将其打开)进入前景)。如果用户此时最小化/关闭应用程序,更新将继续在后台正常运行。

我需要做些什么来允许在后台长时间运行监控更新吗?一段时间后 iOS 是否停止后台监控?

注意:我运行的是 iOS 9.3.1

最佳答案

如果 iOS 应用程序被授予“始终”位置访问权限,它们应该能够在后台无限期地检测信标

这是我第二次听到这样的报告,所以我想知道这是一个错误还是新 iOS 版本的变化。报告您的 iOS 版本会很有帮助。

一种可能性:网络调用可能被阻止,而不是信标检测。您可以通过将 NSLog 语句添加到:

  1. 登录信标检测
  2. 登录到服务器的成功和失败连接。

添加上述内容后,重现您在服务器上看不到事件的问题。然后将手机连接到 XCode 并转到 Devices,查看最近的 NSLog 输出可以看到:

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

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

编辑:当未进行检测时,您可能会尝试的另一件事是在前台启动不同的信标扫描仪应用程序,如 Locate .这将强制执行操作系统蓝牙扫描,并且可能会启动您的应用程序检测。如果这有效,它会告诉您蓝牙扫描已在手机上暂停。

关于ios - iBeacon 后台监控停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36940484/

相关文章:

ios - 如何让iOS后台应用程序根据位置信息进行通知

ios - 通过 cocoa pod 安装 Subliminal

ios - 本地通知不适用于 iOS 模拟器

iphone - 以米为单位的 startMonitoringForRegion 的最小精度

ios - 创建委托(delegate)时收到警告

ios - SwiftUI - 输入文本时防止 TextField 扩展

ios - CLLocationManager 委托(delegate)方法未被调用

ios - 如何阻止 Xcode 忽略我的 iOS 应用程序的 CoreLocation.framework?

facebook - “InvalidOperationException”,原因 : 'fbauth2 is missing from your Info.plist under LSApplicationQueriesSchemes and is required for iOS 9.0'

Swift:获取字符串宽度以在 swift 2.2 中制作框架(使用 CGRect)