首页 > 解决方案 > 当应用程序被杀死时,iOS 13 会跟踪用户位置

问题描述

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

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



}

标签: iosswiftcllocationmanager

解决方案


当应用程序被杀死时,您有 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

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

决定哪种方法适合您,然后深入研究其文档。


推荐阅读