2016-07-19 10 views
2

私のアプリではGPSから経度と緯度を取得しようとしています。そのためには、自分の場所にアクセスするための許可をユーザーに求めなければなりません。私はInfo.plistにこの2 rulees追加することを行う前に:Privacy - Location When In Use Usage DescriptionPrivacy - Location Always Usage Descriptionを、そしてAppDelegateに私が許可それをやって(SWIFT 3.0)について尋ねる:CLLocationプロンプトが一瞬で表示され消えます

if CLLocationManager.locationServicesEnabled() == true { 
     let localisationManager = CLLocationManager() 
     localisationManager.requestWhenInUseAuthorization() 
     localisationManager.startUpdatingLocation() 
    } 

アプリを実行している間、私は一瞬のためにUIAlertControllerを見ることができますが、ほとんど同じ時間にそれが消えて、私はAllowをタップする時間がなく、私はGPSを使うことができません。それを修正するには?私は問題が認証プロンプトが表示される前localisationManagerオブジェクトが... requestWhenInUseAuthorizationランを割り当て解除されていることであるclass LocationManager and then I used it in function.

答えて

2

var locationManager = CLLocationManager()別々の変数を作成し

:私の問題の解決策の作業

遅れているので、CLLocationManagerのこのインスタンスはあなたの下から引き出されます。

localisationManagerのスコープを、ローカル変数ではなくView Controllerクラスに変更します。

class ViewController: UIViewController { 
let localisationManager = CLLocationManager() // <-- scope to class 

//... 
function requestAuthorization() { 
    localisationManager.requestWhenInUseAuthorization() 
} 

} 

あなたは可能性があり、代わりにアプリのデリゲートにスコープCLLocationManagerを。

これはWWDC 2016ビデオセッションのコアロケーションベストプラクティス近い分21でうまく説明されています。

関連する問題