在iOS中屏幕关闭时如何继续监控iBeacon?

我正在开发一个iOS应用程序来监控iBeacons。 它在前景和后台都很好用。 即使屏幕关闭,我也需要它来监控。 现在我的问题是,当我用肩膀按钮关闭屏幕时,NSLog显示iBeacon信号相应地关闭(RSSI = 0,beacon.accuracy = -1.0),10秒后,根本没有找到信标,而委托方法locationManager:didRangeBeacons:inRegion:被连续调用。 当屏幕关闭时,应用程序似乎正在运行,但iOS会关闭iBeacon测距的位置服务。 我试着设置“locationManager.pausesLocationUpdatesAutomatically = NO;” 但仍然无法正常工作。 关于这个问题有什么建议吗? 提前致谢。

看来你正在做范围而不是监控。 范围仅在应用程序处于活动状态时才有效 – 无论是在前台还是在后台。 问题是,iOS会在您远离它后自动将应用程序放入睡眠状态几秒钟,或者锁定屏幕。

你需要记住的是,在iOS上真的没有“永久背景状态”这样的东西。 应用程序在后台运行一段有限的时间,同时转换到暂停状态(让它们,例如,完成上传/下载),还有背景模式有时允许应用程序在后台运行,但这些通常是保留的对于非常特定的应用程序 – 例如,“音频”背景模式意味着应用程序可以在后台运行,只要它播放音乐等。有“位置”服务的背景模式,但它保留用于转换 – 转动导航应用。

然而,即使您的应用程序进入睡眠状态,信标监控也会继续运行,或者由于内存压力而被iOS终止。 当您进入或离开信标范围时,iOS会将您的应用程序启动到后台以处理事件,给它几秒钟(您可以使用后台执行任务延长几分钟)来执行此操作(你可以在那个时间范围内),但它又回到了睡眠状态。

您可能还想看看这个问题:
当app在后台时,从信标接收信号