web-dev-qa-db-fra.com

CLLocationManager.authorizationStatus () toujours CLAuthorizationStatus.NotDeterminé avec l'application Swift et objC

Je peux simplement obtenir l'autorisation de mon CLLocationManager. (Swift sous ios8) J'ajoute même un appel requestAlwaysAuthorization explicite (dont je n'ai pas besoin avec objC sous ios7)

func finishLaunch() {
    //ask for authorization
    let status = CLLocationManager.authorizationStatus()
    if(status == CLAuthorizationStatus.NotDetermined) {
        self.locationManager.requestAlwaysAuthorization();
    }
    else {
        self.startMonitoring()
    }
    ...
}

le rappel n'obtient jamais rien sauf NotDermined et il n'y a pas d'UIAlertView montré à l'utilisateur.

func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
    if(status == CLAuthorizationStatus.NotDetermined) {
        println("Auth status unkown still!");
    }
    self.startMonitoring()
}

Suis-je en train de mal faire? - Je me sens comme un bug mais j'aimerais avoir des commentaires

21
Daij-Djan

N'oubliez pas que les clés NSLocationAlwaysUsageDescription ou NSLocationWhenInUseUsageDescription sont désormais obligatoires, vous devez donc les inclure dans votre plist.

39
amb

La seule chose que vous devez faire est d'ajouter la clé "NSLocationWhenInUseUsageDescription" à votre application info.plist puis de créer une méthode CLLocationManager requestWhenInUseAuthorization et de l'appeler dans viewDidLoad.

3
Tiago Sousa

Comme cela arrive également avec mon application objC - celle que je SAIS fonctionne bien sous ios7 - j'ai pensé que cela devrait être un bogue du système d'exploitation et l'ai signalé: # 17128352

1
Daij-Djan