2015-01-27 3 views
2

У меня есть приложение, и я хочу добавить к нему некоторые функции, основанные на местоположении. Он поддерживает как iOS 7, так и 8, но у меня есть некоторые проблемы.службы определения местоположения iOS7 и iOS 8

Я хочу запросить разрешение на размещение только тогда, когда пользователь удаляет определенную кнопку на определенном диспетчере viewController. Проблема заключается в том, что запрос разрешения появляется сразу после запуска приложения. Точнее, между функциями ViewWillAppear и ViewDidAppear первого viewController.

То, что я пытался ранее:

  1. имея ключ NSLocationWhenInUseUsageDescription в PLIST (для iOS8). С точки зрения кода:

    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    self.locationManager.delegate = self; 
    if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 
        [self.locationManager requestWhenInUseAuthorization]; 
    } 
    [self.locationManager startUpdatingLocation]; 
    
  2. вынув ключ Plist -> это вызвало популярность в iOS8 не появляться больше, но он по-прежнему делает в iOS7

В настоящее время каждый отдельный бита кода, связанной с CoreLocation закомментирован и я до сих пор получить диалоговое окно с запросом мне разрешения (iOS7 только)

Я не знаю, что еще я мог бы попробовать, так что любые бита помощь очень ценятся

+1

Не выполняйте никаких действий с кодом CLLocationManager, пока пользователь не нажмет нужную кнопку. –

ответ

1

Хорошо, я обнаружил проблему. Оказалось, что стороннее приложение запрашивает разрешения сразу после открытия приложения. Спасибо за ответы.

+0

Как вы узнали, какая третья сторона запросила местонахождение? – leviathan

1

Вот как работает iOS 7 (и раньше). Вы не отвечаете за диалог авторизации: система. Вы не можете заставить его появиться; система, видя, что вы используете Core Location, представляет ее от вашего имени. Это именно то, что меняет iOS 8. Все, что вы можете сделать в iOS 7, - это посмотреть, включены ли службы определения местоположения и разрешено ли ваше приложение.

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