当应用被杀死时,iOS 13会跟踪用户位置

时间:2019-11-22 11:40:46

标签: ios swift cllocationmanager

即使应用被用户杀死,我也想跟踪用户位置。我已经尝试过以下代码,但是在关闭应用程序后无法正常工作。

override func viewDidLoad() {
        super.viewDidLoad()
        locationManager.delegate = self
         self.checkUsersLocationServicesAuthorization()
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.allowsBackgroundLocationUpdates = true
        locationManager.requestAlwaysAuthorization()
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()

    }


extension ViewController: CLLocationManagerDelegate {

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

        for location in locations {

            let objr = ["lat": "\(location.coordinate.latitude)",
                "logn": "\(location.coordinate.longitude)",
                "date": self.getCurrentDateAndTime()]
            self.saveToCoreDataAndFetchBack(objr as NSDictionary)
            //self.TriggerNotification()
        }
    }



}

1 个答案:

答案 0 :(得分:1)

在应用被杀死时,您有2个跟踪用户位置的选项:

1-> 区域监视又称地理围栏:您将设置要监视的区域,并且当用户进入或离开该区域时,iOS系统将唤醒您的应用并在应用委托中通知您有关位置更新。 https://developer.apple.com/documentation/corelocation/monitoring_the_user_s_proximity_to_geographic_regions

2-> 重要更改位置服务:在这种情况下,仅当用户位置发生重大更改时,iOS系统才会唤醒您的应用。价值在500米左右。 https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/using_the_significant-change_location_service

注意:要使这两个功能同时起作用,您将需要用户“ 始终”的位置权限。

确定适合您的方法,然后深入了解其文档。