API App Badging позволяет установленным веб-приложениям устанавливать на значке приложения значок, действующий на все приложение.
Что такое API для маркировки приложений?

API App Badging позволяет установленным веб-приложениям устанавливать значок для всего приложения, отображаемый в определенном месте операционной системы, связанном с приложением (например, на полке или на главном экране).
С помощью значков можно легко уведомить пользователя о наличии новой активности, которая может потребовать его внимания, или указать небольшой объем информации, например количество непрочитанных сообщений.
Значки, как правило, более удобны для пользователя, чем уведомления, и могут обновляться с гораздо большей частотой, поскольку они не прерывают пользователя. И поскольку они не прерывают пользователя, им не нужно разрешение пользователя.
Возможные варианты использования
Примеры приложений, которые могут использовать этот API:
- Чат, электронная почта и социальные приложения, чтобы сообщать о поступлении новых сообщений или показывать количество непрочитанных сообщений.
- Приложения для повышения производительности, сигнализирующие о завершении длительной фоновой задачи (например, рендеринга изображения или видео).
- В играх — для подачи сигнала о необходимости действия игрока (например, в шахматах, когда наступает очередь игрока).
Поддерживать
API App Badging работает в Windows и macOS, в Chrome 81 и Edge 81 или более поздних версиях. Поддержка ChromeOS находится в разработке и будет доступна в будущем выпуске. На Android API Badging не поддерживается. Вместо этого Android автоматически отображает значок на значке приложения для установленного веб-приложения при наличии непрочитанного уведомления, как и для приложений Android.
Попробуй это
- Откройте демонстрационную версию API App Badging .
- При появлении запроса нажмите «Установить» , чтобы установить приложение, или используйте меню Chrome для его установки.
- Откройте его как установленный PWA. Обратите внимание, он должен быть запущен как установленный PWA (на панели задач или в доке).
- Нажмите кнопку Установить или Очистить , чтобы установить или очистить значок на значке приложения. Вы также можете указать число для значения значка .
Как использовать API App Badging
Чтобы использовать API App Badging, ваше веб-приложение должно соответствовать критериям установки Chrome , а пользователи должны добавить его на свои домашние экраны.
API значка состоит из двух методов navigator
:
-
setAppBadge(
number
)
: Устанавливает значок приложения. Если указано значение, установите значок на указанное значение, в противном случае отобразите простую белую точку (или другой флаг, соответствующий платформе). Установкаnumber
на0
аналогична вызовуclearAppBadge()
. -
clearAppBadge()
: удаляет значок приложения.
Оба возвращают пустые обещания, которые можно использовать для обработки ошибок.
Значок может быть установлен либо с текущей страницы, либо с зарегистрированного сервисного работника. Чтобы установить или очистить значок (либо на странице переднего плана, либо в сервисном работнике), вызовите:
// Set the badge
const unreadCount = 24;
navigator.setAppBadge(unreadCount).catch((error) => {
//Do something with the error.
});
// Clear the badge
navigator.clearAppBadge().catch((error) => {
// Do something with the error.
});
В некоторых случаях операционная система может не допускать точного представления значка. В таких случаях браузер попытается предоставить наилучшее представление для этого устройства. Например, поскольку API Badging не поддерживается на Android, Android всегда показывает только точку вместо числового значения.
Не предполагайте ничего о том, как пользовательский агент отображает значок. Некоторые пользовательские агенты могут взять число вроде "4000" и переписать его как "99+". Если вы сами насытите значок (например, установив его на "99"), то "+" не появится. Независимо от фактического числа, просто вызовите setAppBadge(unreadCount)
и позвольте пользовательскому агенту разобраться с его отображением соответствующим образом.
Хотя API App Badging в Chrome требует установленного приложения, вам не следует делать вызовы API Badging зависимыми от состояния установки. Просто вызовите API, когда он существует, так как другие браузеры могут показывать значок в других местах. Если он работает, то он работает. Если нет, то он просто не работает.
Установка и очистка значка в фоновом режиме от сервисного работника
Вы также можете установить значок приложения в фоновом режиме с помощью service worker. Сделайте это либо через периодическую фоновую синхронизацию, либо через Push API, либо с помощью комбинации того и другого.
Периодическая фоновая синхронизация
Периодическая фоновая синхронизация позволяет сервисному работнику периодически опрашивать сервер, что можно использовать для получения обновленного статуса, и вызывать navigator.setAppBadge()
.
Однако частота, с которой вызывается синхронизация, не совсем надежна и вызывается по усмотрению браузера.
API веб-Push
Push API позволяет серверам отправлять сообщения сервис-воркерам, которые могут запускать код JavaScript, даже если не запущена ни одна страница переднего плана. Таким образом, push-уведомление сервера может обновить значок, вызвав navigator.setAppBadge()
.
Однако большинство браузеров, включая Chrome, требуют отображения уведомления при получении push-сообщения. Это нормально для некоторых случаев использования (например, отображение уведомления при обновлении значка), но делает невозможным незаметное обновление значка без отображения уведомления.
Кроме того, для получения push-сообщений пользователи должны предоставить вашему сайту разрешение на уведомления.
Комбинация обоих вариантов
Хотя это и не идеально, использование Push API и периодической фоновой синхронизации вместе обеспечивает хорошее решение. Высокоприоритетная информация доставляется через Push API, показывая уведомление и обновляя значок. А низкоприоритетная информация доставляется путем обновления значка, либо когда страница открыта, либо через периодическую фоновую синхронизацию.
Обратная связь
Команда Chrome хочет узнать о вашем опыте использования API App Badging.
Расскажите нам о дизайне API
Есть ли что-то в API, что работает не так, как вы ожидали? Или отсутствуют методы или свойства, которые вам нужны для реализации вашей идеи? У вас есть вопрос или комментарий по модели безопасности?
- Сообщите о проблеме спецификации в репозитории API Badging GitHub или добавьте свои мысли к существующей проблеме.
Сообщить о проблеме с реализацией
Вы нашли ошибку в реализации Chrome? Или реализация отличается от спецификации?
- Сообщите об ошибке на https://new.crbug.com . Обязательно включите как можно больше подробностей, простые инструкции по воспроизведению и установите Components в
UI>Browser>WebAppInstalls
. Glitch отлично подходит для обмена быстрыми и простыми воспроизведениями.
Показать поддержку API
Планируете использовать API App Badging на своем сайте? Ваша публичная поддержка помогает команде Chrome расставлять приоритеты функций и показывает другим поставщикам браузеров, насколько важна их поддержка.
- Отправьте твит @ChromiumDev , используя хэштег
#BadgingAPI
, и расскажите нам, где и как вы его используете.
Полезные ссылки
- Публичный объяснитель
- Проект спецификации
- Демонстрация API Badging | Исходный код демонстрационного API Badging
- Ошибка отслеживания
- Запись ChromeStatus.com
- Компонент Blink:
UI>Browser>WebAppInstalls
Героическое фото Пратика Катьяла на Unsplash