web-dev-qa-db-ja.com

CLLocationManager.authorizationStatus()は常にSwift&objCアプリでCLAuthorizationStatus.NotDetermined

CLLocationManagerに認証させることができます。 (ios8の下での迅速な)私は明示的なrequestAlwaysAuthorization呼び出しさえ追加します(ios7の下のobjCでは必要ありません)

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

コールバックはNotDermined以外は何も取得せず、ユーザーにUIAlertViewは表示されません。

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

私は間違っていますか? -バグのように感じますが、フィードバックをお願いします

21
Daij-Djan

NSLocationAlwaysUsageDescriptionまたはNSLocationWhenInUseUsageDescriptionキーは必須になっているため、plistに含める必要があることに注意してください。

39
amb

必要なのは、キー「NSLocationWhenInUseUsageDescription」をアプリのinfo.plistに追加し、CLLocationManager requestWhenInUseAuthorizationメソッドを作成して、viewDidLoadで呼び出すことだけです。

3
Tiago Sousa

私のobjCアプリでも発生するので(ios7で問題なく動作するものです)、OSのバグであると考えて報告しました:#17128352

1
Daij-Djan