Мне неясно, как Apple собирается начать мониторинг местоположения. Скажем, я хочу запросить «Всегда» авторизацию и получить обратные вызовы местоположения, включенные startUpdatingLocation()
. Документы Apple для requestAlwaysAuthorization()
говорят:
Вы можете вызывать requestAlwaysAuthorization (), когда текущее состояние авторизации равно .notDetermined или .authorizedWhenInUse. ... Ваше приложение больше не может запрашивать авторизацию Always после того, как пользователь ответит на это приглашение. Повторный вызов этого метода не будет иметь никакого эффекта.
Это означает, что мы должны проверить состояние перед вызовом. Однако в документах по authorizationStatus()
говорится:
Использование authorizationStatus () не нужно и не рекомендуется. Вместо этого реализуйте функцию обратного вызова делегата locationManager (_: didChangeAuthorization :), чтобы получить актуальный статус авторизации.
Так что вам следует просто всегда вызывать requestAlwaysAuthorization()
при запуске, даже если у вас уже есть разрешения, а затем позвоните startUpdatingLocation()
, если вы получаете статус «авторизованный» в didChangeAuthorization
обратном вызове? Гарантирован ли обратный вызов? Или вам следует просто позвонить startUpdatingLocation()
независимо от того, получили ли вы авторизованный обратный вызов или нет, и вы начнете получать обновления, когда разрешения позволят это? Последнее, что я видел в тестировании, но я не хочу идти вразрез с рекомендациями Apple по этому вопросу.