2012-05-30 2 views
1

Мое приложение использует типичный шаблон запуска CLLocationManager, а затем вызывает stopUpdatingLocation от locationManager:didUpdateToLocation:fromLocation:, если newLocation достаточно точен. Мой вопрос тоже ли мне нужно позвонитьДолжен ли я отправить [locationManager stopUpdatingLocation] в locationManager: didFailWithError :?

[locationManager stopUpdatingLocation]; 

в locationManager:didFailWithError:. Документы Apple, говорят

If the location service is unable to retrieve a location right away, it reports a kCLErrorLocationUnknown error and keeps trying. In such a situation, you can simply ignore the error and wait for a new event.

If the user denies your application’s use of the location service, this method reports a kCLErrorDenied error. Upon receiving such an error, you should stop the location service.

В первом случае я не должен вызывать stopUpdatingLocation, так как менеджер местоположения может излучать хорошее место. Как насчет других случаев? Мое приложение всегда проверяет [CLLocationManager locationServicesEnabled] и [CLLocationManager authorizationStatus], прежде чем пытаться использовать службы определения местоположения, так что мне действительно нужно обрабатывать случай kCLErrorDenied? И в случае какой-либо другой ошибки автоматически будут остановлены службы определения местоположения?

ответ

0

Прежде всего, я думаю, вы должны справиться с большинством случаев ошибок. Особенно, если это так же просто, как и этот. ;-)
Что произойдет, если пользователь предоставил доступ и использует ваше приложение. Пока приложение запускает ее многозадачность и изменения в settings.app для отключения служб определения местоположения; либо в целом, либо специально для вашего приложения. Затем вы уже проверяли авторизацию и использовали обновления местоположения, но вдруг вы больше не авторизованы. Наверное, это именно тот случай, о котором вы спрашиваете, не так ли?

Смежные вопросы