【发布时间】:2018-05-29 10:54:33
【问题描述】:
我正在构建与区域监控相关的功能,同时开始区域监控我正在请求如下代码所示的状态。在某些设备上,我一直在获取区域状态未知。如果我打开或关闭 Wifi 或将充电器插入其中。它开始正常工作。 如何使其在蜂窝网络上更可靠? 请注意,在进行任何区域监控或状态请求调用之前,我从用户那里获得了所有位置权限。
private func initiateLocationManager() {
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.distanceFilter = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
}
func startMonitoring(alarm: StationAlarm) {
if LocationManager.sharedInstance.isRegionMonitoringAvailable() {
let coordinate = CLLocationCoordinate2D(latitude: stationLatitude, longitude: stationLongitude)
// 1
let region = CLCircularRegion(center: coordinate, radius: CLLocationDistance(radius * 1000), identifier: alarm.alarmId)
// 2
region.notifyOnEntry = true
region.notifyOnExit = false
// 4
locationManager.startMonitoring(for: region)
Utility.delay(0.1) { [weak self] in
self?.locationManager.requestState(for: region)
}
}
}
func locationManager(_: CLLocationManager, didDetermineState state: CLRegionState, for region: CLRegion) {
Log.event("Region State is \(state.rawValue)")
}
【问题讨论】:
-
@Honey 但我不是在等待进入或退出通知。之后我只是请求了该区域的现有状态,调用开始监控。
-
是的,但是您的 wifi 已关闭。我只是想指出:“如果禁用 Wi-Fi,则区域监控的准确性会大大降低。”并且可能会导致它不为人知......
-
@Honey 即使有时它也会发生在 Wifi 中。
-
1.我猜这是因为地理围栏的质量。您是否看到该链接问题的其他答案? 2. AFAIK 你真的不应该关心它的状态,而只是关心它是否进入/退出了一个区域
标签: ios core-location