2016-03-02 43 views
0

我有一個跟蹤用戶位置的應用程序。我有很多經驗,這和使用授權所要求的時候,並添加了關鍵我的P列表,但是我仍然收到此錯誤:IOS Swift用戶位置授權

"Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first."

,我使用外景經理不在ViewController但在另一個班級。

回答

0

這些方法從哪裏調用並不重要,因此您可以從您的應用程序代理的applicationDidFinishLaunching方法(這些授權方法異步運行)或您的第一個視圖控制器的viewDidAppear方法中調用這些方法中的任何一個。

+0

,我想的很多。當我清楚地請求用戶授權時,我無法確定爲什麼仍然收到錯誤消息。 – loadedjd

+0

嘗試設置一個斷點(或使用'print'或'NSLog')來確定哪些被首先調用...導致這些錯誤消息觸發的授權方法或MapKit方法。 –

0

在設置mapView.showsUserLocation = YES或startUpdatingLocation 之前請檢查[CLLocationManager authorizationStatus]確保您的CLLocation變量較強。

(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 

    if (status == kCLAuthorizationStatusAuthorizedWhenInUse) //or kCLAuthorizationStatusAuthorizedAlways 
    { 
     self.mapView.showsUserLocation = YES; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.startUpdatingLocation() 
    } 

您必須使用授權

self.locationManager.requestWhenInUseAuthorization(); or self.locationManager.requestAlwaysAuthorization(); 

的人好歹用戶後,警告不會來第二次接受我從一個操作自定義類調用它的權限

+0

我試過註釋掉「map view.showUserLocaton」,然後我得到了相同的結果,但沒有發生錯誤。該應用從未要求授權。 – loadedjd

+0

您正在使用哪個版本的iOS?你能否粘貼一些你的代碼片段 –

+0

我正在運行IOS 9. – loadedjd