【问题标题】:iOS 13 track user location when app is killed当应用程序被杀死时,iOS 13 会跟踪用户位置
【发布时间】:2019-11-22 11:40:46
【问题描述】:

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

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



}

【问题讨论】:

  • I want to track user location even when app is killed by the user. 是什么原因?
  • 频繁间隔之间的位置跟踪。了解员工是否在工作地点。
  • 您可以为此实现访问跟踪或地理围栏等功能(Apple 有这方面的文档)。用户终止应用是有原因的,他们不希望您持续跟踪他们的位置。
  • 另外,您可能不希望您的位置管理器对象存在于视图控制器中。您将需要使用合适的定位模式,例如重大的定位变化,并在didFinishLaunching 中编写适当的代码来处理定位的重新启动。

标签: ios swift cllocationmanager


【解决方案1】:

当应用被终止时,您有 2 个选项来跟踪用户位置:

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

2-> Significant-Change location service:这种情况下,iOS系统只有在用户位置发生明显变化时才会唤醒你的应用。该值约为 500 米。 https://developer.apple.com/documentation/corelocation/getting_the_user_s_location/using_the_significant-change_location_service

注意:要使这两个功能正常工作,您需要获得用户的“始终”位置权限。

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

【讨论】:

  • Fahad Masood 感谢您的解决方案,我可以使用这两种方案获取位置。但是如何将该位置发送到服务器?这是否可以在应用被杀死时调用 API
  • 我没有尝试过,但我相信这是可以做到的。在这种情况下系统确实会唤醒您的应用,因此您可以尝试在应用委托中调用 API 并查看它是否有效
猜你喜欢
  • 2020-07-10
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
  • 2017-03-09
  • 2013-06-23
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
相关资源
最近更新 更多