iOS 8 не запрашивает разрешение Location
Мое приложение имеет карту прямо в первом ViewController. На iOS 7 он автоматически показывал всплывающее окно с разрешениями сразу после первого запуска. На iOS 8, однако, некоторые изменения необходимы. Я включил ключ NSLocationWhenInUseUsageDescription
в мой файл Info.plist и в AppDelegate я добавил:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestWhenInUseAuthorization];
}
// ...
}
Тем не менее, всплывающее окно никогда не отображается.
Пользовательский интерфейс имеет кнопку, чтобы вернуть карту обратно в местоположение пользователя. В методе кнопки я включил тот же фрагмент кода, что и выше, чтобы посмотреть, поможет ли это.
На этот раз всплывающее окно появляется, но оно просто мигает на экране, и пользователь не может взаимодействовать с ним.
В меню "Настройки"> "Конфиденциальность"> "Службы определения местоположения"> "MyApp" я ожидаю две опции: "Никогда" и "При использовании приложения" Ни один из них не помечен по умолчанию. Кроме того, "объяснение приложения", которое я установил в Info.plist, отображается правильно во втором варианте.
Если я принудительно отмечу второй вариант, приложение будет работать правильно, но я не хочу, чтобы пользователь вручную просматривал параметры, чтобы включить его.
2 ответа
Попробуйте зайти в Настройки -> Общие -> Сброс -> Сбросить все настройки. Помогали некоторые люди.
Есть ли [CLLocationManager authorizationStatus]
возвращается 0 (kCLAuthorizationStatusNotDetermined
)? Потому что я прочитал здесь, что он возвращается nil
иногда.
Вы должны попробовать изменить сравнение.