Разрешения геолокации и точность позиции в браузере
Безопасный контекст, разрешения, точность и приватные запасные пути для геолокации браузера.
Нужна структурированная документация по теме Отпечатки?
Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.
Геолокация браузера может вернуть позицию после согласия человека. Это возможность под контролем пользователя, а не доказательство личности, владения или намерения. Объясните цель, запросите доступ в безопасном контексте и сохраните рабочий путь при отказе, отзыве, тайм-ауте, недоступности или недостаточной точности.
Разрешение и безопасный контекст
API доступен через navigator.geolocation в безопасном контексте. getCurrentPosition() должен следовать явному действию и объяснению. Браузер может показать запрос, отказать или сохранить состояние. MDN Geolocation API и режим разрешений описывают интерфейсы.
Запрашивайте позицию тогда, когда она помогает задаче, а не при несвязанной загрузке. Отказ не должен вызывать цикл или просьбу ослабить настройки. Спецификация W3C Geolocation описывает модель разрешений, но браузер и система решают, доступна ли позиция.
Разрешение можно отозвать, а политика платформы может отключить геолокацию. Сохраните введённые данные, объясните следующий шаг и предложите ручной адрес, сохранённое место или путь без геолокации.
Точность, тайм-аут и кэш
getCurrentPosition() принимает enableHighAccuracy, timeout и maximumAge. Это компромиссы продукта: короткий тайм-аут может завершиться ошибкой, длинный заставит ждать. Кэшированная позиция быстрее, но может быть старой. Высокую точность запрашивайте только при необходимости.
coords.accuracy - оценочный радиус в метрах, а не гарантированный адрес. Координаты могут быть грубыми, старыми или отсутствовать. Показывайте неопределённость и не превращайте радиус в точный адрес без отдельного решения.
Определите допустимые исходы заранее. Для погоды достаточно широкой зоны, а доставка может потребовать подтверждения адреса. Не опрашивайте бесконечно и прекращайте наблюдение после задачи.
Отказ, отзыв и недоступность
Обрабатывайте отказ, тайм-аут, отсутствие позиции и неверный результат как обычные ветки. Объясните проблему и оставшиеся действия. Ручной ввод, индекс, сохранённое место или выбор на карте сохраняют задачу. Отказ не показывает, где находится человек.
После восстановления страницы или изменения настройки пересчитайте краткосрочное локальное решение. Не храните историю координат и не продолжайте наблюдение после навигации. Документируйте проверенную среду, а не универсальную гарантию.
Минимизация данных позиции
Используйте минимальную точность. Держите позицию в памяти для одного экрана и сохраняйте выбранное место вместо координат. Не помещайте координаты в URL, аналитические метки, идентификаторы или записи поддержки по умолчанию.
Перед отправкой позиции сервису объясните цель и срок хранения и запросите отдельный выбор. Событию обычно достаточно permission_denied, coarse_location или manual_fallback, а не истории. Проверьте SDK, отчёты, кэш и фоновые компоненты.
Позиция чувствительна. Не объединяйте её с аккаунтом, сетью, шрифтами, хранилищем, временем или устройством для вывода личности, привычек, здоровья или намерений. Диагностический случай должен иметь цель, ограниченный доступ и удаление.
Запасной путь и тестирование
Проверьте небезопасный контекст, запрос, отказ, отзыв, тайм-аут, отсутствие, старый кэш, грубую точность, задержку высокой точности и ручной ввод. Проверяйте задачу, фокус, подписи и сохранённые данные, но не конкретные координаты.
Элементы должны работать с клавиатурой и экранным диктором. Указывайте, является ли результат приблизительным, кэшированным или недоступным. Сохраняйте фокус после запроса и делайте повтор явным. Текстовая форма должна заменять карту.
Гарантии должны быть уже доказательств: разрешение отзывается, политика отключает геолокацию, а будущая версия меняет точность. После восстановления, изменения политики или выбора другого места пересчитайте локальное решение, объясните ограничение и сохраните обычную задачу.
См. руководство по приватности разрешений и основы приватности браузера.
Метка времени показывает получение позиции, а не момент запроса. Кэшированное значение может быть старым, это нужно показывать.
Проверяйте timeout и maximumAge вместе: свежий результат может не успеть, а кэш отвечает быстро, но устарел.
Состояние granted не гарантирует позицию, а встроенный фрейм может быть ограничен политикой разрешений и верхним документом.
Безопасный контекст разрешает запрос, но не гарантирует датчик, сеть или одобрение системы. Записывайте видимый результат проверенной среды.
После отказа предложите ручной ввод; после тайм-аута ограниченный повтор; после отзыва требуется новое явное действие.
Срок хранения должен соответствовать задаче: память для одного экрана, выбранное место для предпочтения, без истории координат без цели.
Перед передачей сообщите получателя, цель, хранение и удаление; проверьте отчёты, кэш и фоновые компоненты.
Тестируйте состояния разрешений, фреймы, кэш, отсутствие высоты, старые метки, приостановку и ручное восстановление на синтетических данных.
Доступный запасной путь позволяет ввести адрес, выбрать место или продолжить с широкой зоной клавиатурой и экранным диктором.
При изменении задачи пересмотрите точность, время, высоту, тайм-аут, возраст кэша, хранение и запасной путь; обещание должно быть уже доказательств.
Координаты обозначают точку, а accuracy - оценочный горизонтальный радиус; больше знаков после запятой не означает большей точности. Высота может отсутствовать, а время относится к получению результата, а не к текущему присутствию человека. Для границы попросите подтвердить адрес или регион.
Выбирайте параметры по задаче: maximumAge ускоряет широкий обзор, timeout ограничивает ожидание, а enableHighAccuracy может увеличить затраты без малого радиуса. Объясните задержку, дайте отменить ожидание и предложите ручной ввод.
Разделяйте состояния готовности, запроса, разрешения, отказа, недоступности и результата. granted всё ещё может завершиться тайм-аутом, а фрейм может быть ограничен политикой разрешений. Проверяйте контексты отдельно.
Позицию одного экрана держите в памяти. Сохранённое место должно удаляться и изменяться. Перед передачей определите цель, доступ, срок и удаление; проверьте URL, кэш, отчёты и фоновые компоненты.
Обратная связь должна быть текстовой и доступной: возвращайте фокус, сообщайте ожидание, кэш или недоступность и разрешайте отмену, повтор или ввод адреса клавиатурой и экранным диктором.
Список проверки совместимости и запасного пути включает небезопасный контекст, принятые и отозванные разрешения, заблокированный фрейм, кэш, точность, высоту, старое время, тайм-аут, отсутствие провайдера, навигацию, паузу, ручной ввод и удаление на синтетических координатах.
Продукт должен позволять изменить решение: остановить ожидающую передачу, удалить сохранённое место и вернуться к ручному режиму. Объясните, что оставалось локальным и что уже отправлено, не используя разрешение для идентификации человека. Запасной путь должен быть видимым.
Источники
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.