didEnterRegion&在没有iBeacon的情况下实现Geofencing时,应用程序未运行时未调用didDetermineState

时间:2017-11-20 14:26:39

标签: ios swift google-maps cllocationmanager geofencing

我正试图用iBeacon实现Geofencing。该 this.fireauth.auth.onAuthStateChanged被调用,但是 didStartMonitoringFor&当应用未运行时,didEnterRegion未被调用。

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

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

    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)
    }

它有效!