在我的 iOS 应用程序中,仍在与 iBeacon 监控屏幕关闭模式作斗争。
在我的实验中,当屏幕关闭时,委托方法“locationManager:didRangeBeacons:inRegion:”仍然会持续触发,但是,一旦屏幕关闭,信号就会相应消失(RSSI=0,beacon.accuracy= -1.0),然后,10 秒后,根本找不到信标。
我在这篇文章中发现了一些重要信息,说“iOS 以两种不同的方式使用信标:区域监控和信标测距。后者在后台不起作用......或者当应用程序终止时。
CLLocationManager
进入区域时,只会触发一次委托调用。如果您在该区域内开始监视该区域,则不会调用入口委托。您的应用必须手动调用 CLLocationManager 的 requestStateForRegion 方法。退出受监控区域后,CLLocationManager 将在大约 30-45 秒后调用 didExitRegion。”
现在我尝试在屏幕关闭时连续调用“requestStateForRegion:”方法。结果是:
- 如果我的 iPhone 已经在 iBeacon 区域,委托方法“didDetermineState”连续给出“CLRegionStateInside”;
- 当我拿着 iPhone 走出 iBeacon 区域,或者只是关闭 iBeacon 的广告时,30-45 秒后,委托方法“didDetermineState”变为“CLRegionStateOutside”并保持“outside”状态;
- 当我拿着我的 iPhone 走进 iBeacon 区域,或者再次打开 iBeacon 的广告时,委托方法“didDetermineState”仍然连续给出“outside”,并且永远不会返回“inside”。
我需要的是,当屏幕关闭时,我可以在我的 iOS 设备进入 iBeacon 区域时立即检测到。寻求帮助...在此先感谢。