问题描述
当前,我正在检查/更新用户在打开应用程序时通过CLLocation坐标对用户的位置进行firebase,然后立即通过manager.stopUpdatingLocation()
结束“更新”。如果我拿走了manager.stopUpdatingLocation()
,位置会更新every second
。取而代之的是,我希望该位置在后台检查/更新,即使用户退出,every 5 minutes
我猜这应该在App Delegate中完成。
下面是我检查/更新前台位置的方法(每秒钟不停止管理器,一次停止管理器。
func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) {
let databaseRef = Database.database().reference()
guard let uid = Auth.auth().currentUser?.uid else { return }
guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
print("locations = \(locValue.latitude) \(locValue.longitude)")
latestLocation = ["latitude" : locValue.latitude,"longitude" : locValue.longitude]
let lat = locValue.latitude
let lon = locValue.longitude
dict = CLLocation(latitude: lat,longitude: lon)
print("dict",dict)
if let locationDictionary = latestLocation {
databaseRef.child("people").child(uid).child("Coordinates").setValue(locationDictionary)
}
manager.stopUpdatingLocation()
}
...
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = kCLdistanceFilterNone
locationManager.startMonitoringSignificantLocationChanges()
locationManager.startUpdatingLocation()
self.locationManager.requestAlwaysAuthorization()
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)