Я изо всех сил пытаюсь найти где-нибудь правильную реализацию CLLocationManager.Пожалуйста, кто-нибудь может предложить подход, который учитывает все нижеприведенное:
- Только запрашивать разрешение только тогда, когда это необходимо, а не при первоначальной установке / аутентификации приложения.
- Запуск CLLocationManager наОсновная тема.Без этого я получаю предупреждение в консоли, многие реализации онлайн не учитывают это.
- Запрос разрешений не инициируется в viewDidLoad ().Это представляет всплывающее окно, но сразу же закрывает его, как только представление завершает загрузку.
- Доступ к функциям делегата - опять же, это зависит от запуска CLLocationManager в главном потоке.
Мой текущий рабочий процесс: -Успешная проверка подлинности (выполнено) - пользователь направляется в табличное представление (выполнено) - запрашивает у пользователя разрешение на доступ к его местоположению GPS - добавляет прослушиватель, чтобы зафиксировать, какой уровень разрешений выбирает пользователь.- Перенаправьте пользователя на экран предупреждения, если пользователь выбрал не разрешать местоположение.
Следующие шаги (чего я не могу достичь): - Если «Когда используется» или «Всегда разрешать», тонемедленно обновите табличное представление новыми данными.- При следующем запуске приложения не нужно проходить вышеуказанный рабочий процесс, поскольку пользователь теперь выбрал уровень разрешений.- Запустить отслеживание местоположения и загрузить данные из API
В идеале я бы также знал, когда местоположение пользователей изменилось на расстояние X, чтобы я мог обновить данные снова, если они будут в движении.
Любая помощь очень ценится.
Спасибо