Отпечатки

Battery Status API: приватность и доступность

Что сообщает Battery Status API, почему его поддержка ограничена и как использовать состояние батареи без создания профиля пользователя.

Документация

Нужна структурированная документация по теме Отпечатки?

Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.

Battery Status API может сообщать браузеру текущее состояние зарядки, уровень батареи и примерное время зарядки или разрядки. Это необязательный сигнал возможностей с ограниченной поддержкой, а не идентификатор устройства и не гарантия продолжительности сеанса. Приложение должно проверять наличие функции, сохранять полезный режим по умолчанию и использовать результат только для обратимого и понятного пользователю решения.

Доступность Battery Status API, локальное решение и переход к резервному режиму

Что предоставляет Battery Status API

Если браузер предоставляет navigator.getBattery(), приложение может вызвать этот метод. Возвращаемый BatteryManager может содержать charging, level, chargingTime и dischargingTime, а также события изменения. Эти значения описывают текущее состояние питания с точки зрения браузера; это не инвентаризация оборудования, не точная гарантия оставшегося времени и не измерение износа батареи.

Значения могут измениться во время визита, быть недоступными, округлёнными или ограниченными политикой браузера. Считайте их подсказкой для текущей задачи. Страница может отложить необязательную анимацию или сократить фоновые обновления, когда устройство не заряжается, но не должна убирать обязательное содержимое или делать вывод о личности пользователя.

Недоступность является обычной веткой совместимости

MDN относит Battery Status API к функциям с ограниченной доступностью. Поэтому рабочая страница не может предполагать наличие navigator.getBattery или успешное выполнение Promise. Поддержка зависит от браузера, версии, контекста и политики пользовательского агента. Проверяйте метод, обрабатывайте отказ и сохраняйте тот же базовый сценарий без значения.

Не заменяйте проверку функции названием браузера. Проверяйте нужное продукту поведение: страница должна оставаться рабочей при отсутствии API, изменении значения или ошибке запроса. В руководстве по возможностям браузера описан такой же подход с приоритетом резервного режима для другой необязательной API.

Небольшое и обратимое решение продукта

Сначала определите базовый сценарий, работающий без данных о батарее. Если результат доступен, используйте его для выбора одной из нескольких политик, например обычной или с меньшим объёмом фоновой работы. Сохраняйте навигацию, формы, альтернативы для медиа и средства доступности. Существенное изменение объясняйте обычным языком продукта и предоставляйте выбор, если оно влияет на передачу данных, качество или ожидание.

Состояние батареи не должно управлять авторизацией, оплатой, восстановлением аккаунта или обязательным запросом. Сервер не должен зависеть от значения JavaScript, которое может отсутствовать или измениться между запросами. Если человек явно выбрал экономию данных или уменьшенные эффекты, отправляйте этот выбор, а не исходные поля батареи.

Границы конфиденциальности и минимизация данных

Показания батареи могут усиливать отпечаток браузера в сочетании с другими сигналами. Используйте их только в нужном решении и удаляйте исходные значения после выбора политики. По умолчанию не добавляйте level, состояние зарядки или время к идентификаторам аккаунта, URL, аналитическим меткам или долгосрочным записям поддержки.

Операционным журналам обычно достаточно выбранной политики и результата, например power_policy=reduced и сведений о завершении необязательной задачи. Если обращению в поддержку действительно нужны дополнительные данные, объясните цель, ограничьте доступ, установите короткий срок хранения и удалите поля после закрытия обращения. В руководстве по основам приватности браузера разобраны более широкие принципы минимизации.

Проверяйте резервный путь, а не конкретный уровень заряда

Тесты должны охватывать отсутствие API, отказ getBattery(), изменение level или charging, а также браузер, который предоставляет только базовый путь. Убедитесь, что обязательное содержимое и элементы управления остаются доступны, необязательную работу можно отменить, а пользователь может продолжить после изменения состояния. Не проверяйте, что конкретное устройство обязано вернуть определённый процент или время.

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

API описывает состояние, видимое этому контексту, а не обещание операционной системы.

Браузер может вернуть немного устаревшее значение или уменьшить его точность.

Код должен допускать изменение значения сразу после чтения.

Базовое поведение должно работать до прихода асинхронного результата.

Отклонённый Promise и отсутствие метода означают недоступность улучшения.

Этот результат не должен превращаться в блокирующее страницу предупреждение.

После возвращения документа на экран можно пересчитать краткое решение.

Не следует постоянно повторять запросы, чтобы получить отсутствующий сигнал.

Управляемый профиль, встроенный фрейм или приватный контекст могут изменить доступность.

Описывайте проверенное поведение, не обещая поддержку всего семейства браузеров.

При отсутствии необязательного предпросмотра статья и элементы управления должны работать.

Для долгой операции можно предложить паузу или пониженное качество.

Сохраняйте введённые данные и делайте возобновление безопасным и повторяемым.

При изменении зарядки переоценивайте только затронутую необязательную работу.

Не меняйте содержимое или качество молча посреди действия.

Отчёты об ошибках и сторонние SDK тоже могут копировать поля батареи.

У исходящих событий должен быть явный список разрешённых полей.

Политику одной вкладки можно хранить только в памяти.

Продолжение обычного сценария при отсутствии API уменьшает создание истории питания.

Источники

#Battery Status API#Батарея#Конфиденциальность#Определение Возможностей

Переведите BotBrowser из исследований в продакшн

Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.