【发布时间】:2015-12-28 05:24:37
【问题描述】:
在我的 iOS 应用程序中,我仍在为屏幕关闭模式而使用 iBeacon 监控。
在我的实验中,当屏幕关闭时,委托方法“locationManager:didRangeBeacons:inRegion:”仍然会持续触发,但是,一旦屏幕关闭,信号就会相应消失(RSSI=0, beacon .accuracy=-1.0),然后,10 秒后,根本找不到信标。
我在this 帖子中发现了一些重要信息,称“iOS 以两种不同的方式使用信标:区域监控和信标测距。后者在后台不工作......,或者当应用程序终止时。
CLLocationManager 在进入区域时只会触发一次委托调用。如果您在该区域内开始监视该区域,则不会调用入口委托。您的应用必须手动调用 CLLocationManager 的 requestStateForRegion 方法。退出监控区域后,CLLocationManager 将在大约 30-45 秒后调用 didExitRegion。”
现在我尝试在屏幕关闭时连续调用“requestStateForRegion:”方法。结果是:
- 如果我的 iPhone 已经在 iBeacon 区域,委托方法 “didDetermineState”连续给出“CLRegionStateInside”;
- 当我拿着 iPhone 走出 iBeacon 区域时,或者只是 关闭 iBeacon 的广告,30-45 秒后, 委托方法“didDetermineState”变为“CLRegionStateOutside” 并保持在“外部”状态;
- 当我拿着我的 iPhone 走进 iBeacon 区域,或者打开 iBeacon 的广告再次,委托方法 “didDetermineState”仍然连续给出“外部”并且从不 回到“内部”。
我需要的是,当屏幕关闭时,我可以在我的 iOS 设备进入 iBeacon 区域时立即检测到。寻求帮助...提前致谢。
【问题讨论】:
标签: ios swift cllocationmanager ibeacon screen-off