IOS Swift用户位置授权

时间:2016-03-02 03:52:33

标签: ios objective-c swift cllocationmanager

我有一个跟踪用户位置的应用。我对此有很多经验,并在使用授权时请求并将密钥添加到我的P-List中,但是我仍然收到此错误:

  

"尝试在不提示的情况下启动MapKit位置更新   位置授权。必须调用 - [CLLocationManager   requestWhenInUseAuthorization]或 - [CLLocationManager   requestAlwaysAuthorization]首先。"

我使用的位置管理器不在ViewController中,而在另一个类中。

2 个答案:

答案 0 :(得分:0)

调用这些方法的位置无关紧要,因此您可以从应用委托的applicationDidFinishLaunching方法(这些授权方法异步运行)或viewDidAppear方法中调用这些方法中的任何一种你的第一个视图控制器。

答案 1 :(得分: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();

无论如何,在用户接受许可

后第二次不会发出警告