CLLocationManager startUpdatingLocation не вызывается

#ios #objective-c #mapkit #cllocationmanager

#iOS #objective-c #mapkit #cllocationmanager

Вопрос:

Я работаю с некоторым кодом для обновления местоположения. Один и тот же код работает в разных проектах или в новом проекте, но всякий раз, когда я запускаю его в существующем проекте startUpdatingLocation , он не вызывается. Таким образом, местоположение пользователя не может быть показано. Я имею в виду, что синей точки там нет. Вот код, который я использую:

в файле .h

 @interface CheckIn : UIViewController<CLLocationManagerDelegate, MKMapViewDelegate, YCameraViewControllerDelegate>

{
    CLLocationManager *locationManager;
}

@property (nonatomic, strong) CLLocationManager *locationManager;
@property (strong, nonatomic) IBOutlet MKMapView *mapCheckinAcity;
  

в файле .m

в viewDidLoad

 self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
[self.locationManager startUpdatingLocation];
  

Я настраиваю все настройки и работаю на реальном устройстве. Как я уже сказал, это работает в новом проекте, но не в существующем. На данный момент я действительно в замешательстве.

Комментарии:

1. Проверьте конфиденциальность-> Настройки местоположения для вашего приложения. Как только приложению было отказано в доступе к местоположению, система больше не запрашивает пользователя. Реализовали ли вы didChangeAuthorizationStatus метод делегирования диспетчера местоположений? Какое значение вы получаете для статуса авторизации?

2. В том же приложении у меня есть другая карта, которая была реализована ранее, например, более года назад. Он работает должным образом с тем же кодом.

3. Какой статус вы получаете didChangeAuthorizationStatus ?

4. он даже не вызывается.

5. Затем установите точку останова в вашем viewDidLoad месте, где вы создаете диспетчер местоположений, и убедитесь, что он вызывается. Ваш код выглядит правильно, но если ваши методы делегирования не вызываются, у вас проблема в другом месте