ios - 当应用程序被杀死时,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()
}
}
}
解决方案
当应用程序被杀死时,您有 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
注意:要使这两个功能起作用,您将需要用户的“始终”位置许可。
决定哪种方法适合您,然后深入研究其文档。
推荐阅读
- c# - 如何将 Double 作为字符串输出到 x 位小数且没有尾随零
- javascript - 确定用户访问网页时的当前本地时间和 UTC 时间 (JavaScript)
- mysql - 如何在 Laravel 中加速这个嵌套的 eloquent 查询?
- java - Java 可重入锁。解锁方法不重置头部,如何去除包裹在节点中的执行线程?
- git - 将 Android App 存储库安全推送到 GitHub
- java - 逐级展平动态层次结构树
- java - 如何在一个@Query 中删除实体和所有关联实体
- sql - 使用 SQL 使用 Snowflake 对列的多行进行分类
- mysql - 两个表之间的许多关系 - 代码优先
- c# - C# - 通过创建日期和 UNIX Cron 表达式获取上次作业执行的日期