在我的iOS应用程序中,仍需要与iBeacon监视功能进行屏幕关闭模式的对抗。
在我的实验中,关闭屏幕后,仍会连续触发委托方法“locationManager:didRangeBeacons:inRegion:”,但是,一旦屏幕关闭,信号就会相应消失(RSSI = 0,beacon.accuracy = -1.0),然后10秒钟后,根本找不到信标。
我在this帖子中发现了一些重要信息,其中说:“iOS以两种不同方式使用信标:区域监视和信标测距。后者在后台不起作用...或当应用终止时。
输入区域后,CLLocationManager
将仅触发一个委托调用。如果您在某个区域的内部开始监视该区域,则不会调用条目委托。您的应用必须手动调用CLLocationManager的requestStateForRegion方法。退出受监视的区域后,CLLocationManager将在大约30-45秒后调用didExitRegion。”
现在,我尝试在屏幕关闭时连续调用“requestStateForRegion:”方法。结果是:
“didDetermineState”连续给出“CLRegionStateInside”;
在30-45秒后,关闭iBeacon的广告
委托方法“didDetermineState”变为“CLRegionStateOutside”
并保持在“外部”状态;
iBeacon的广告再次委托方法
“didDetermineState”仍然连续不断地给出“外部”,并且永远不会
回到“内部”。
我需要的是,当屏幕关闭时,我可以在我的iOS设备进入iBeacon区域后立即进行检测。寻求帮助...谢谢。
最佳答案
您是否在NSLocationAlwaysUsageDescription
中添加了info.plist
?我真的可以建议您按照this教程进行操作。