在没有 iBeacon 的情况下实施地理围栏时,当应用程序不是 运行 时,不会调用 didEnterRegion 和 didDetermineState

didEnterRegion & didDetermineState not being called when the app is not running while implementing Geofencing without iBeacon

我正在尝试使用 iBeacon 实现地理围栏。这 didStartMonitoringFor 正在调用,但是 didEnterRegion & didDetermineState 当应用不是 运行 时未被调用。

我在 didStartMonitoringFor 中调用 requestState。所以 didDetermineState 是第一次被调用。但是在位置更改时不会被调用。有人可以帮助我吗?

提前致谢!

感谢上帝!我自己得到了答案。

我一直在主屏幕 class 中进行所有声明和委托方法实现。我将所有部分更改为 AppDelegate class。还对位置管理器的属性进行了一些更改

    locationManager.delegate = self
    locationManager.activityType = .automotiveNavigation
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    locationManager.distanceFilter = 10.0
    locationManager.requestAlwaysAuthorization() 

还实现了两种委托方法

func locationManager(_ manager: CLLocationManager, didStartMonitoringFor region: CLRegion){
    manager.requestState(for: region)
}
func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, for region: CLRegion) {
    if state == .inside
    {
            addNotification(region: region)
    }
}
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
            addNotification(region: region)
    }

成功了!