2017-01-08 2 views
0

Менеджер CLLocation работает только для первого запуска приложения. Это мой код.Менеджер CLLocation работает только для первого запуска приложения

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

if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
{ 
    [self.locationManager requestAlwaysAuthorization]; 
} 
[self.locationManager startUpdatingLocation]; 
+0

Работает только в первый раз? или он не работает в первый раз? – hasan83

+0

он работает при первом запуске приложения, он не работает –

+0

Этот код не должен работать в первый раз. Он должен всегда сбой в первый раз и преуспеть в последующих прогонах. Я не знаю, как это происходит в вашем случае! – hasan83

ответ

0

Я нашел решение, проблема возникла из симулятора при перезапуске приложения, когда местоположение переместится в местоположение по умолчанию, которое отсутствует.

Поэтому, когда я перезапускаю свое приложение, я получил ошибку didFailWithError: Error Domain = kCLErrorDomain Code = 0.

При повторном открытии приложения выберите новое местоположение из отладки -> местоположение или используйте устройство для тестирования.

+0

, но это не значит, что вы можете запросить разрешение и начать обновление местоположения. мой комментарий все еще держится, это не сработает в первый раз. – hasan83

+0

Нет, это работает для меня, как я добавляю сообщение, чтобы показать, когда спросите разрешения в info.plist, и используйте функцию делегата, чтобы получить местоположение, и он работает все время. –

0

Попробуйте автострада в месте отладки для симулятора, чтобы проверить свое местоположение, когда вы закрываете местоположение приложения, чтобы перейти к нему. Изменить его на автостраду

+0

спасибо за ваш ответ, я проверю его –

+0

Хорошо. испытайте его и дайте мне знать. Удачи –

+0

это работа спасибо –

Смежные вопросы