2016-03-02 71 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