2010-03-18 6 views
2

При попытке получить геолокацию на iPhone в первый раз - я отказался. Каждый другой раз, когда я хочу, чтобы получить место (до другой перезагрузки страницы) Я не получаю никакого ответа (без ошибок и без успеха):пользователь запретил геолокацию - уведомить пользователя второй раз

navigator.geolocation.getCurrentPosition(
    function (location) { 
     ig_location.lat = location.coords.latitude; 
     ig_location.lng = location.coords.longitude; 
     alert('got it!'); 
    }, 
    function(PositionError) { 
     alert('failed!' + PositionError.message); 
    } 
); 

Есть ли способ, чтобы уведомить пользователя каждый раз, когда я не в состоянии получить место?
(Мне не нужно использовать watchPosition ...)

ответ

4

API геолокации разработан таким образом, что он не раздражает пользователя повторными запросами после их снижения. Вы можете сбросить предупреждения о местоположении из приложения настроек, но это все, что вы можете сделать.

Как только пользователь дважды отклонит разрешение на геолокацию, API предположит, что он не хочет этого и не спрашивает снова.

Точная формулировка из адресной документации Core:

Если пользователь отрицает использование вашего приложения службы определения местоположения, этот метод сообщает об ошибке kCLErrorDenied. После получения такой ошибки вы должны остановить службу определения местоположения.

+2

Спасибо за ответ. для других людей, которые ищут фактический документ - его по адресу: http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CoreLocation_Framework/CoreLocation_Framework.pdf – Dror