Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Уведомления

Уведомление — всплывающее сообщение операционной системы в углу экрана. Оно видно, даже когда окно программы скрыто или свёрнуто в трей. 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Картинка; по умолчанию значок программы
silenttrue — без звука

Проверить, поддерживает ли система уведомления, можно методом 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, — иначе объект может быть удалён сборщиком мусора, и щелчок ничего не сделает.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.