Используйте API уведомлений

API browser.notifications позволяет создавать уведомления с использованием шаблонов и отображать эти уведомления пользователям в системном трее:

Уведомления в системном трее пользователя

Как они выглядят

Расширенные уведомления бывают четырех типов: базовые, с изображением, в виде списка и с отображением прогресса. Все уведомления включают заголовок, сообщение, небольшой значок, отображаемый слева от сообщения уведомления, и поле contextMessage , которое отображается в виде третьего текстового поля более светлым шрифтом.

Простое уведомление:

Основное уведомление

В уведомлениях списка отображается любое количество элементов списка:

Уведомление списка

В уведомлениях об изображениях отображается предварительный просмотр изображения:

Уведомление об изображении

В уведомлениях о ходе выполнения отображается индикатор выполнения:

Уведомление о ходе выполнения

Как они себя ведут

В ChromeOS уведомления отображаются в системном трее пользователя и остаются там до тех пор, пока пользователь их не закроет. В системном трее хранится счетчик всех новых уведомлений. Как только пользователь увидит уведомление в системном трее, счетчик обнуляется.

Уведомлениям можно присвоить приоритет от -2 до 2. Приоритеты меньше 0 отображаются в центре уведомлений ChromeOS и вызывают ошибку на других платформах. Приоритет по умолчанию равен 0. Приоритеты больше 0 отображаются с возрастающей длительностью, и в системном трее может отображаться больше уведомлений с более высоким приоритетом.

Настройка priority не влияет на порядок уведомлений в macOS.

Помимо отображения информации, все типы уведомлений могут включать до двух пунктов действия. Когда пользователи нажимают на пункт действия, ваше расширение может отреагировать соответствующим действием. Например, когда пользователь нажимает «Ответить» , открывается почтовое приложение, и пользователь может завершить ответ:

Действия при уведомлении

Как их разработать

Для использования этого API вызовите метод notifications.create() , передав сведения об уведомлении в качестве параметра options :

await browser.notifications.create(id, options);

Объект notifications.NotificationOptions должен содержать параметр notifications.TemplateType , определяющий доступные сведения об уведомлениях и способ их отображения.

Создать простое уведомление

Все типы шаблонов ( basic , image , list и progress ) должны включать title и message уведомления, а также iconUrl , который представляет собой ссылку на небольшой значок, отображаемый слева от сообщения уведомления.

Вот пример basic шаблона:

var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon"
}

Используйте изображение

Тип шаблона image также включает imageUrl , который представляет собой ссылку на изображение, отображаемое в предварительном просмотре уведомления. Обратите внимание, что изображения не отображаются пользователям в macOS.

var opt = {
  type: "image",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

Создать уведомление для списка

Шаблон list отображает items в виде списка. Обратите внимание, что на macOS пользователям отображается только первый элемент.

var opt = {
  type: "list",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  items: [{ title: "Item1", message: "This is item 1."},
          { title: "Item2", message: "This is item 2."},
          { title: "Item3", message: "This is item 3."}]
}```

### Create progress notification {: #progress }

The `progress` template displays a progress bar where current progress ranges from 0 to 100. On macOS the progress bar displays as a percentage value in the notification title instead of in the progress bar.

```js
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

Внимательно следите за событиями и реагируйте на них.

Все уведомления могут включать обработчики событий, реагирующие на действия пользователя (см. browser.events ). Например, вы можете написать обработчик событий, реагирующий на событие notifications.onButtonClicked .

Обработчик событий:

browser.notifications.onButtonClicked.addListener(replyBtnClick);

Обработчик событий:

function replyBtnClick {
    //Write function to respond to user action.
}

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