Богатый API уведомлений

Разница между платформами: В Chrome версии 59 уведомления отображаются иначе для пользователей Mac OS X. Вместо собственных уведомлений Chrome пользователи видят стандартные уведомления Mac OS X. Подробнее читайте в этой статье .

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

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

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

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

Базовое изображение:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

chrome.notifications.create(id, options, creationCallback);

Объект 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 , который представляет собой ссылку на изображение, отображаемое в предварительном просмотре уведомления:

Разница между платформами: изображения не будут отображаться пользователям Chrome версии 59 и выше на Mac OS X.
var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

В приложениях Chrome, из-за строгой политики безопасности контента, эти URL-адреса должны указывать на локальный ресурс или использовать URL-адрес объекта типа BLOB или данных . Используйте соотношение сторон 3:2 для изображения; в противном случае изображение будет обрамлено черной рамкой.

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

Шаблон list отображает items в формате списка:

Разница между платформами: В Chrome версии 59 и выше на Mac OS X пользователям отображается только первый элемент списка.
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."}]
}

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

В шаблоне отображения progress показывается индикатор выполнения, где текущий прогресс варьируется от 0 до 100:

Разница между платформами: В Chrome версии 59 и выше на Mac OS X индикатор выполнения отображается в виде процентного значения в заголовке уведомления, а не в виде полосы прогресса.
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

Отслеживание событий и реагирование на них

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

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

chrome.notifications.onButtonClicked.addListener(replyBtnClick);

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

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

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