2016-07-11 4 views
0

場所の許可を求めるエラーの表示:「場所の認可を求めずにMapKitの場所の更新を開始しようとしています。問題は私がすでにやっていることです。以前とは全く違う何かのURLスキームを追加するまで、うまくいきました。場所の許可を求めるエラーの表示

これは私のViewControllerである:あなたは、ユーザーが既に自分の位置を追跡する権限を付与されている場合は依頼する必要があり

override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     self.locationManager.delegate = self 
     self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     self.locationManager.requestAlwaysAuthorization() 
     self.locationManager.startUpdatingLocation() 
     self.mapView.showsUserLocation = true 
     //your loc 
     mapView.delegate = self 
     let initialLocation = CLLocation(latitude: 39, longitude: 77) 
     centerMapOnLocation(initialLocation) 
     } 
+0

エラーは何ですか?私たちはいくつかの詳細を必要とするのを助けるために –

+0

requestAlwaysAuthorization()は、彼らが世界で最も速いユーザであっても、ダイアログをユーザに表示します。 startUpdatingLocation()は次のコード行で実行されます。とにかくユーザーが許可を与えない場合はどうなりますか?リクエスト認可を実装する方法に関する数多くのチュートリアルと質問があり、読んでいるだけでなく、数行のコードほどシンプルではありません。 – Gruntcakes

答えて

2

if CLLocationManager.authorizationStatus() == .NotDetermined { 
    manager.requestAlwaysAuthorization() 
} 

は、その後、あなたが呼び出されるコールバック関数を必要とします許可は付与されます:

func locationManager(manager: CLLocationManager, 
        didChangeAuthorizationStatus status: CLAuthorizationStatus) 
{ 
    if status == .AuthorizedAlways || status == .AuthorizedWhenInUse { 
     manager.startUpdatingLocation() 
     // ... 
    } 
} 

これは非同期で行う必要があります(たとえば、View Controllerがロードされたときに)アクセス権を要求するタイミングを知っているが、ユーザーが[許可]ボタンをクリックするタイミングを知らないために、

NSLocationWhenInUseUsageDescriptionまたはNSLocationAlwaysUsageDescriptionを設定することを忘れないでください。そうしないと、プロンプトが表示されません。

関連する問題