Предупреждение XCode при использовании MapKit и CoreLocation
Я пытаюсь использовать реализовать экземплярMKMapView
использоватьCoreLocation
чтобы отслеживать местоположение пользователей, а затем увеличить, где они находятся.
Я только хочу отслеживать местоположение пользователя, когда я на переднем плане. Поскольку мое приложение предназначено для iOS8, у меня есть запись для ключаNSLocationWhenInUseUsageDescription
.
Когда я запускаю приложение в первый раз, оно соответствующим образом спрашивает, может ли оно получить доступ к моему местоположению. После того, как я нажму «Разрешить», я получу следующее предупреждение от XCode:
Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
... что немного сбивает с толку, как я на самом деле называюrequestWhenInUseAuthorization
, как видно из моего кода ниже:
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@property(nonatomic, retain) CLLocationManager *locationManager;
@end
@implementation MapView
- (void)viewDidLoad {
[super viewDidLoad];
[self locationManager];
[self updateLocation];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
self.locationManager = nil;
}
- (CLLocationManager *)locationManager {
//We only want to get the location when the app is in the foreground
[_locationManager requestWhenInUseAuthorization];
if (!_locationManager) {
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
return _locationManager;
}
- (void)updateLocation {
_mapView.userTrackingMode = YES;
[self.locationManager startUpdatingLocation];
}
Есть ли у кого-нибудь понимание, почему это предупреждение будет иметь место?