I have written this program, it is work when the app is displaying on screen
If the app in background, it stop to print the latitude, when I resume the app, it will start to print again.
I have enabled background modes in xcode, and also checked Location updates
, why my app still not running in background?
If the app is running, just the print
function does not work in background, how can I know the app is running?
class ViewController: UIViewController,
CLLocationManagerDelegate {
var locationManager: CLLocationManager = CLLocationManager()
var startLocation: CLLocation!
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation])
{
let latestLocation: CLLocation = locations[locations.count - 1]
print(latestLocation.coordinate.latitude)
}
override func viewDidLoad() {
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
startLocation = nil
}
}
If your app uses location in the background ).you have to set allowsBackgroundLocationUpdates
to YES in addition to setting the background mode capability in Info.plist
. Otherwise location updates are only delivered in foreground.
if CLLocationManager is first called startUpdatingLocation
method, and in the projectname-Info.plist file is added Required Background Modes
-> App registers for location updates.