Brendan Chang Brendan Chang - 1 month ago 27
Swift Question

Check if location services are enabled

I've been doing some research about CoreLocation. Recently, I encountered a problem that has been covered elsewhere, but in Objective C, and for iOS 8.

I feel kinda silly asking this, but how can you check if location services are enabled using swift, on iOS 9?

On iOS 7 (and maybe 8?) you could use

locationServicesEnabled()
, but that doesn't appear to be working when compiling for iOS 9.

So how would I accomplish this?

Thanks!

Answer

Add the CLLocationManagerDelegate to your class inheritance and then you can make this check:

Swift 1.x - 2.x version:

if CLLocationManager.locationServicesEnabled() {
    switch(CLLocationManager.authorizationStatus()) {
    case .NotDetermined, .Restricted, .Denied:
        print("No access")
    case .AuthorizedAlways, .AuthorizedWhenInUse:
        print("Access")
    }
} else {
    print("Location services are not enabled")
}

Swift 3.0 version:

if CLLocationManager.locationServicesEnabled() {
     switch(CLLocationManager.authorizationStatus()) {
        case .notDetermined, .restricted, .denied:
            print("No access")
        case .authorizedAlways, .authorizedWhenInUse:
            print("Access")
        }
    } else {
        print("Location services are not enabled")
}