Xcode меняет службы определения местоположения моего приложения

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

Всякий раз, когда я запускаю приложение на своем устройстве или симуляторе, приложение открывается и немедленно переключает мои службы определения местоположения с «Авторизовано» на «Не определено». По какой-то причине это происходит только со мной и ни с кем из других моих разработчиков.

Я не уверен, что это проблема с Xcode, который я обновил до 6.01 прошлой ночью, или что-то в моем коде.

Я попытался сбросить службы определения местоположения для приложения, но сразу же, когда я возвращаюсь к приложению, оно снова меняет его на «Не определено».

Любая идея, что вызывает эти проблемы? Кто-нибудь сталкивался с подобной проблемой?

Ниже приведен фрагмент кода из моего locationManager.

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
NSLog(@"did change status");

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
    NSLog(@"not determined");

} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
    NSLog(@"Authorized");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Location Services Authorized" object:self];

} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted){
    NSLog(@"restricted");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Location Services Restricted" object:self];

} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
    NSLog(@"denied");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Location Services Denied" object:self];

} else {
    NSLog(@"can not");

person Adam Cooper    schedule 20.09.2014    source источник
comment
stackoverflow.com/questions/25844430/ Проверь это   -  person Bhumit Mehta    schedule 20.09.2014


Ответы (3)


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

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

person progrmr    schedule 20.09.2014

Возможно, у приложения нет доступа к службе определения местоположения, она должна быть отключена на экране настроек, не могли бы вы это проверить? Выберите "Настройки" > "Конфиденциальность" > "Службы геолокации" > "Ваше приложение" > "Вкл."

person virus    schedule 20.09.2014

Я решил проблему!

Оказывается, Apple внесла пару изменений в свой менеджер основных местоположений.

Вы можете прочитать больше об этом здесь:

http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/

Спасибо за помощь.

person Adam Cooper    schedule 23.09.2014