Я пытаюсь запросить always
доступ к обновлениям местоположения. Согласно документации Apple, мне нужно добавить ключ NSLocationAlwaysAndWhenInUseUsageDescription
в мой info.plist
и вызвать requestAlwaysAuthorization()
на мой CLLocationManager
.
Однако это просто не работает. Нет всплывающих окон с запросом авторизации и сообщений об ошибках:
ContentView()
.onAppear {
CLLocationManager().requestAlwaysAuthorization()
}
Это ДЕЙСТВИТЕЛЬНО работает, когда я меняю клавишу info.plist
на NSLocationWhenInUseUsageDescription и вместо этого вызываю requestWhenInUseAuthorization()
.
Что я делаю неправильно?
Обновлено:
Я также попробовал добавить возможности «Обновления местоположения»:
Я думаю, что документация Apple нуждается в улучшении, так как вам нужно просмотреть несколько страниц, чтобы найти правильный способ сделать это. Но за этим может быть трудно следовать намеренно.
Вы должны вызвать этот метод или метод requestWhenInUseAuthorization(), прежде чем ваше приложение сможет получать информацию о местоположении. Чтобы вызвать этот метод, у вас должны быть ключи
NSLocationAlwaysUsageDescription
иNSLocationWhenInUseUsageDescription
в файле Info.plist вашего приложения.
Подумайте об этом так: авторизация «При использовании» является базовым вариантом для всех авторизаций. Вы должны представить это предупреждение в качестве первого шага для получения разрешений на определение местоположения.
Более того, даже если вы запросили и получили разрешение «Всегда», iOS все равно будет предлагать пользователю в случайное время в будущем предупреждение «Изменить на только во время использования».
Итак, вы поняли… Apple просто не хочет, чтобы вы использовали «Всегда».