我正在开发一个 iOS 应用程序来监控 iBeacons。它在前景和背景中都表现良好。我还需要它即使在屏幕关闭时也能保持监控。现在我的问题是,当我用肩部按钮关闭屏幕时,NSLog显示iBeacon信号相应地关闭(RSSI=0,beacon.accuracy=-1.0),10秒后,根本没有找到信标,同时不断调用委托方法 locationManager:didRangeBeacons:inRegion: 。屏幕关闭时应用程序似乎正在运行,但 iOS 关闭了 iBeacon 测距的位置服务。我尝试设置“locationManager.pausesLocationUpdatesAutomatically = NO;”但仍然不起作用。对于这个问题有什么建议吗?提前致谢。
看来你正在做ranging而不是监控。仅当应用程序处于活动状态(无论是在前台还是在后台)时,测距才起作用。问题是,当你离开应用程序或锁定屏幕后,iOS 会自动让应用程序进入睡眠状态几秒钟。
你必须记住的是,iOS 上确实不存在“永久后台状态”这样的东西。应用程序在后台运行一段有限的时间,同时转换到挂起状态(让它们完成上传/下载),还有一些后台模式有时使应用程序能够在后台运行,但这些通常是保留的对于非常特定的应用程序 - 例如,“音频”后台模式意味着应用程序只要播放音乐就可以在后台运行,等等。“位置”服务有一个后台模式,但它是为实时导航而保留的打开导航应用程序。
Beacon 监控然而,即使您的应用程序进入睡眠状态,或者由于内存压力而被 iOS 终止,它仍会继续运行。当您进入或超出信标范围时,iOS 会将您的应用程序启动到后台来处理该事件,并给予它几秒钟的时间(您可以使用后台执行任务 https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html)这样做(您可以在这段时间内进行调整),但随后又回到睡眠状态。
您可能还想看看这个问题:
当应用程序在后台时接收来自信标的信号 https://stackoverflow.com/questions/33984778/receive-signal-from-beacon-while-app-is-in-the-background
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)