Уведомления
Уведомление — всплывающее сообщение операционной системы в углу экрана. Оно видно, даже когда окно программы скрыто или свёрнуто в трей. Electron показывает уведомления средствами самой системы, поэтому выглядят они так же, как у других программ.
Уведомление из главного процесса
В главном процессе уведомление создаётся классом Notification из модуля electron. Покажем его после экспорта заметок:
// main.js
const { Notification } = require('electron');
function notifyExported(filePath) {
const notification = new Notification({
title: 'Заметки',
body: `Заметки сохранены в ${filePath}`,
});
notification.show();
}Вызовите notifyExported(result.filePath) в обработчике notes:export из урока о диалогах после записи файла. В углу экрана появится сообщение с путём к файлу.
Параметры
| Параметр | Что задаёт |
|---|---|
title | Заголовок |
body | Текст |
icon | Картинка; по умолчанию значок программы |
silent | true — без звука |
Проверить, поддерживает ли система уведомления, можно методом Notification.isSupported().
Щелчок по уведомлению
// main.js
notification.on('click', () => {
win.show();
win.focus();
});
notification.show();Если окно было скрыто в трей, щелчок по уведомлению покажет его. Подписку на событие делают до вызова show().
Уведомление со страницы
На странице работает стандартный браузерный класс Notification — тот же, что на сайтах. Разрешение у пользователя спрашивать не нужно:
// renderer.js
function remind(note) {
new Notification('Напоминание', { body: note });
}Браузерное уведомление удобно, когда всё нужное уже есть на странице. Если же уведомление связано с работой главного процесса — сохранением, загрузкой, таймером в фоне, — показывайте его из main.js.
Особенности Windows
Windows связывает уведомления с идентификатором программы (AppUserModelID). Установщик Electron Forge задаёт его сам, а для запуска через npm start его можно указать в коде:
// main.js
if (process.platform === 'win32') {
app.setAppUserModelId('com.example.notes');
}Строку обычно пишут в начале main.js, до создания окон.
Частая ошибка
Создать объект Notification недостаточно: без вызова show() уведомление не появится, а ошибки при этом не будет. Кроме того, сохраняйте ссылку на уведомление, если подписались на click, — иначе объект может быть удалён сборщиком мусора, и щелчок ничего не сделает.