Метод, который вы используете сейчас, -locationManager:didUpdateToLocation:fromLocation
- лучшее место, где можно что-либо сделать с пользовательским местоположением. Хотя есть пара вещей, которые я бы отличал от вас.
Прежде всего, вы принимаете самое первое обновление местоположения как лучшее. Возможно, вы просили определенную точность, но запрос на это не означает, что newLocation
от этого метода является лучшим. Часто, вы получите очень низкую точность, или кешированное местоположение с некоторого времени в прошлом. Что бы я сделал, это проверил новое местоположение на возраст и точность, и только при хорошем увеличении.
Еще одна вещь, которую я хотел бы сделать, - отключить обновления местоположения, либо когда появилось обновление с хорошей точностью, либо через 30 секунд после запуска обновления. Установите таймер для его выключения, а когда вы его выключите, установите более длинный таймер, чтобы включить его и проверить снова.
Наконец, убедитесь, что вы правильно реализовали -locationManager:didFailWithError:
для всех случаев. Это всегда одна из проверенных вещей, когда вы отправляете приложение. Если он не выйдет изящно (например, в режиме полета), он, вероятно, будет отклонен.
Поиск в переполнении стека методов и кода для выполнения этих задач.