[英]How to get location update in ios using swift even when the app is running in background
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: viewDidLoad代码:
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]
}
Enable location update -> Background Mode -> Capabilities 启用位置更新 - >背景模式 - >功能
I was using this method get location in background. 我正在使用这种方法在后台获取位置。 This method write in AppDelegate class
此方法在AppDelegate类中编写
func getLocation() {
self.locationManager = CLLocationManager()
self.locationManager.delegate = self
if self.locationManager.responds(to: #selector(self.requestAlwaysAuthorization)) {
self.locationManager.requestAlwaysAuthorization()
}
self.locationManager.distanceFilter = kCLDistanceFilterNone
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
if !CLLocationManager.locationServicesEnabled() {
// location services is disabled, alert user
var servicesDisabledAlert = UIAlertView(title: "Alert", message: "Location service is disable. Please enable to access your current location.", delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "")
servicesDisabledAlert.show()
}
else {
self.locationManager.startUpdatingLocation()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.