I am developing an app in which i need to update user's location regularly, but i am not able to get location update when the app is suspended or running in background. I have also enabled background location update in capabilities.
viewDidLoad code:
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.allowsBackgroundLocationUpdates = true
locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
let user=FIRAuth.auth()?.currentUser?.displayName
if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedAlways || CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedWhenInUse){
locationManager.requestLocation()
location=locationManager.location
locationManager.startUpdatingLocation()
locationManager.startMonitoringSignificantLocationChanges()
//updating to database
ref.child("\(user!)/lat").setValue(location.coordinate.latitude)
ref.child("\(user!)/long").setValue(location.coordinate.longitude)
//location=locationManager.location
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
location=locations[locations.count-1]
}