我有一个跟踪用户位置的应用。我对此有很多经验,并在使用授权时请求并将密钥添加到我的P-List中,但是我仍然收到此错误:
"尝试在不提示的情况下启动MapKit位置更新 位置授权。必须调用 - [CLLocationManager requestWhenInUseAuthorization]或 - [CLLocationManager requestAlwaysAuthorization]首先。"
我使用的位置管理器不在ViewController
中,而在另一个类中。
答案 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();
无论如何,在用户接受许可
后第二次不会发出警告