Проблема со службами определения местоположения в Xcode 8

#ios #xcode

#iOS #xcode

Вопрос:

Я использую методы делегирования местоположения, чтобы получить текущее местоположение пользователя.Все работает нормально, когда я отлаживаю его с помощью xcode 7.3, но когда я отлаживаю его с использованием последней версии Xcode 8 и отключаю службу определения местоположения из настроек, в этом случае на экране постоянно появляется всплывающее окно «Отключить службу определения местоположения» и всплывающее окно с запросом разрешения на получение местоположения, и экран приложения зависает до перезагрузки телефона.

Это код в классе AppDelegate

 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{

    NSLog(@"locationManager didUpdateLocations: %@",locations);
    for(int i=0;i<locations.count;i  ){
        CLLocation * newLocation = [locations objectAtIndex:i];
        CLLocationCoordinate2D theLocation = newLocation.coordinate;
        CLLocationAccuracy theAccuracy = newLocation.horizontalAccuracy;
        self.myLocation = theLocation;
        self.myLocationAccuracy = theAccuracy;
    }
    if (self.shareModel.afterResume==TRUE) {
       appStatus=@"Killed";
    self.locationTracker = [[LocationTracker alloc]init];

    self.locationTracker.str_latitude=[NSString stringWithFormat:@"%f",self.myLocation.latitude];
    self.locationTracker.str_longitude=[NSString stringWithFormat:@"%f",self.myLocation.longitude];
    self.locationTracker.pushStatus=FALSE;
    [self.locationTracker GetDevice_LocationSettings];
    }

}
  

введите описание изображения здесь

введите описание изображения здесь

Эти два всплывающих окна появляются одно за другим и не позволяют выполнять какие-либо другие действия.

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

1. Я не уверен. Но просто чтобы знать, что вы использовали в файле plist для определения местоположения. Использовали ли вы «NSLocationWhenInUseUsageDescription» или «NSLocationAlwaysUsageDescription». Если это всегда так, можете попробовать другой. возможно, причина этой проблемы всегда запрашивает разрешение. Дайте мне знать

2. Если ваше приложение заблокировано, потому что появляется «всплывающее окно для запроса разрешения на непрерывное получение местоположения», я хотел бы увидеть код, в котором вы пытаетесь включить / запросить разрешение у пользователя. Вызывается ли это повторно или только один раз?

3. @Janmenjaya в списке, который я использую: Конфиденциальность — Описание постоянного использования местоположения

4. @MichaelDautermann: если (IS_OS_8_OR_LATER) { [self.shareModel.anotherLocationManager запрашивает постоянную авторизацию]; } я использую это для завершения запуска в appdelegate и еще в двух местах в других классах

5. Вы проверили, установив для этого значение «NSLocationWhenInUseUsageDescription». Поскольку я сомневаюсь, что Apple, возможно, рассматривала это как сценарий ограничения: вы попросили приложение использовать службу определения местоположения, чтобы использовать всегда и снова, не разрешая местоположение из настроек. Если это так, Apple определенно должна решить эту проблему, чтобы не заставлять устройство функционировать как ваше (если они ограничены по причине, о которой я упомянул, тогда они должны заставить ОС показывать предупреждение один раз, а не несколько раз).). Но, по моему мнению, можете ли вы проверить и сообщить мне, работает ли этот способ, а затем подтвердить ошибку?