У меня есть кнопка найти меня в моем приложении. Поведение, когда пользователь нажимает кнопку, довольно прямолинейно. Если службы определения местоположения отключены, я показываю пользователю предупреждение об этом, в противном случае начинается обновление местоположения.
Чтобы проверить, включены ли/отключены службы определения местоположения, я запускаю CLLocationManager
, и если я получаю код ошибки kCLErrorDenied
в
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
Я показываю UIAlertView, что служба определения местоположения отключена.
Это работает хорошо, но проблема возникает, когда я запускаю CLLocationManager
в первый раз (или пользователь сбрасывает настройки своих служб местоположения). В этой ситуации система показывает предупреждение, которое спрашивает пользователя, согласен ли он с тем, что приложение будет использовать службы определения местоположения, и если пользователь не разрешает использовать службы определения местоположения, я немедленно получаю сообщение об ошибке.
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
и должно отображать предупреждение второго приложения о том, что службы определения местоположения отключены для приложения, но это не очень умно, потому что пользователь отключил его всего секунду назад.
Итак, вопрос заключается в том, как узнать, что оповещение системных служб определения местоположения было на экране, а пользователь отключил службы определения местоположения секунду назад, чтобы не отображать второе предупреждение?