【发布时间】:2017-05-31 14:06:43
【问题描述】:
在 后台模式 下使用 ibeacons 进行测试时,我发现使用以下方法进行检测存在很大问题:
前台工作正常
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {}
我想要实现的想法是自己管理第二次检测到信标的时间,让我靠近信标。
问题是当第二次尝试检测相同的信标(有时甚至是第一次检测其他信标)时,由于某种奇怪的原因,在第一次检测之后不再调用此函数。
唯一的方法是从信标中取出电池(间歇性)或带着我的信标步行直到离开检测区域(这总是有效的)。
最后我使用这个函数进行验证:
func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, for region: CLRegion) {
if (state == CLRegionState.inside)
{
print("didDetermineState inside!!!!")
}
else if (state == CLRegionState.outside)
{
print("didDetermineState outside!!!!")
}
else
{
print("didDetermineState Other!!!!")
}
}
仅执行这 2 个选项中的一部分,该函数会再次触发
提前致谢。
更新
考虑到this answer,didRangeBeacons 应该不断执行,但我正在尝试didEnterRegion 问题。
我正在使用这两个功能:
- didRangeBeacons: for beacons visibles in ranging.
- didEnterRegion: for Geofencing and beacons too
【问题讨论】:
-
我认为您需要更详细地解释您期望发生的事情以及您所看到的内容。
-
嗨@davidgyoung 感谢您的评论,请参阅我的问题中的
The idea部分。