I just can get my CLLocationManager to authorise. (swift under ios8) I even add an explicit requestAlwaysAuthorization call (which I don't need with objC under ios7)
func finishLaunch() {
//ask for authorization
let status = CLLocationManager.authorizationStatus()
if(status == CLAuthorizationStatus.NotDetermined) {
self.locationManager.requestAlwaysAuthorization();
}
else {
self.startMonitoring()
}
...
}
the callback never gets anything but NotDermined and there is no UIAlertView shown to the user.
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if(status == CLAuthorizationStatus.NotDetermined) {
println("Auth status unkown still!");
}
self.startMonitoring()
}
Am I doing it wrong? -- Feels like a bug to me but I'd like some feedback
Keep in mind that NSLocationAlwaysUsageDescription
or NSLocationWhenInUseUsageDescription
keys are now mandatory, so you should include that in your plist.
The only thing that you have to do is to add the Key "NSLocationWhenInUseUsageDescription" to your app info.plist then make a CLLocationManager requestWhenInUseAuthorization method and call it in the viewDidLoad.
As it happens with my objC app as well -- the one I KNOW works fine under ios7 -- I figured it should be a OS bug and reported it: #17128352
来源:https://stackoverflow.com/questions/24024116/cllocationmanager-authorizationstatus-always-clauthorizationstatus-notdetermin