DevGang
Авторизоваться

Отправка уведомлений с помощью node-notifier (Mac, Windows, Linux) 

Уведомления предоставляют отличный способ привлечь пользователей ваших приложений и могут использоваться для предоставления или запроса обратной связи. В этом руководстве мы рассмотрим, как отправлять уведомления с помощью Node.js и node-notifier.

node-notifier - это библиотека для отправки кроссплатформенных нативных уведомлений в Node JS.

Создание уведомления с помощью node-notifier

Создадим каталог для нашего проекта и инициализируем в нем проект Node с настройками по умолчанию:

cd node-native-notifications
npm init -y
npm install --save node-notifier

Далее в файл index.js мы импортируем node-notifier:

const notifier = require('node-notifier');

Есть два способа создать и отправить простое уведомление с помощью node-notifier. Передача строки в функцию notify():

notifier.notify('Hello!');

Или, в качестве альтернативы, вы можете передать объект и установить такие атрибуты, как title и message:

notifier.notify({
  title: 'Greetings',
  message: 'Hello!'
});

Запустим этот код, чтобы увидеть уведомление в действии:

node index.js

Уведомления накладываются на экран рабочего стола, и мы можем видеть два отправленных сообщения:

Настройка уведомлений

Помимо параметров title и message, вы также можете настроить отображение icon, использовать sound для добавления звука уведомления или использовать wait для ожидания действия пользователя.

sound и wait по умолчанию являются false.

Давайте добавим к нашему уведомлению иконку, которой может быть любой файл изображения, а также звук. Кроме того, мы будем ждать, пока пользователь также выполнит действие:

const path = require('path');

notifier.notify({
    title: 'Salutations!',
    message: 'Hey there!',
    icon: path.join(__dirname, 'icon.jpg'),
    sound: true,
    wait: true
  },
  function (err, response) {
    console.log(response);
  }
);

В приведенный выше код мы включаем модуль path, который поможет нам получить путь к нашему файлу. Мы также передаем функции notify() функцию обратного вызова и регистрируем ответ или взаимодействие пользователя с нашим уведомлением в консоли.

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

Уведомление будет выглядеть так:

Если вы нажмете кнопку, чтобы закрыть уведомление, строка dismissed будет записана на вашу консоль. Если нет взаимодействия с уведомлением, пока оно не исчезнет, ​​оно отображается timeout. Если щелкнуть само уведомление, оно записывается в консоль undefined.

Настройка параметров для разных платформ

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

node-notifer пытается использовать систему с наилучшим пользовательским интерфейсом, но предпочитает собственные решения. Он предоставляет резервные варианты для каждой платформы, как определено в их схеме решений.

Однако вы можете создать настраиваемого репортера для каждой из систем отчетности, чтобы контролировать поведение уведомлений, которые вы отправляете в своем приложении. Есть пять средств отчетности: Notification Center, Windows Toaster, Windows Balloons, Growl и notify-send.

Параметр wait не применяется при использовании Windows Toaster или Notification Center, поскольку Windows Toasters всегда ожидает, а Notification Center не поддерживает параметр wait.

Параметр sound можно использовать только для Notification Center и Windows Toaster. Параметр icon принимает абсолютный путь к файлу изображения и не работает в Windows Balloon.

Growl

Это репортер, который является запасным вариантом, когда другие репортеры не работают или недоступны для ОС. Он основан на пакете Growly с открытым исходным кодом и отправляет сообщения с помощью утилиты Growl для отправки собственных уведомлений.

Добавьте в свой код следующее, чтобы настроить репортер Growl для вашего приложения:

const fs = require('fs);
const Growl = require('node-notifier').Growl;
// Or
// const Growl = require('node-notifier/notifiers/growl');
 
let growlNotifier = new Growl({
  name: 'Node'
  host: 'localhost',
  port: 23053
});
 
growlNotifier.notify({
  title: 'Greetings',
  message: 'Hello user!',
  icon: fs.readFileSync(__dirname + '/icon.jpg'),
  wait: false,
  
  // Other growl options like sticky etc.
  sticky: false,
  label: undefined,
  priority: undefined
});

В приведенном выше коде мы создаем новый экземпляр Growl с несколькими настроенными параметрами, такими как его имя, хост и порт, на которых он будет работать.

Затем мы вызываем метод notify() с нашими обычными параметрами. Growl знакомит нас с некоторыми дополнительными параметрами, которые описаны здесь.

Windows Toaster

Это репортер специально для ОС Windows, которая поддерживает уведомления начиная с Windows 8 и новее.

Давайте воспользуемся репортером Windows Toaster, чтобы отправить уведомление:

const WindowsToaster = require('node-notifier').WindowsToaster;
// Or
// const WindowsToaster = require('node-notifier/notifiers/toaster');
 
let windowsToasterNotifier = new WindowsToaster({
  withFallback: true
});
 
windowsToasterNotifier.notify({
    title: "Windows Toaster Notification",
    message: "This is a notification sent from the Windows Toaster Notifier",
    icon:  path.join(__dirname, 'icon.jpg'),
    sound: "SMS",
  },
  function (error, response) {
    console.log(response);
  }
);

Здесь мы создаем экземпляр WindowsToaster, устанавливая аргумент withFallback как true. Если этот уведомитель не работает, он вернется к Growl или Windows Balloons.

Затем вызываем метод .notify() с обычными параметрами.

Windows Balloon

Это репортер специально для всех версий ОС Windows ниже Windows 8. Он использует всплывающие подсказки на панели задач для отображения уведомлений. Чтобы настроить параметры специально для этого репортера, вы можете написать свой код следующим образом:

const WindowsBalloon = require('node-notifier').WindowsBalloon;
// Or
// const WindowsBallon = require('node-notifier/notifiers/windowsballon');
 
var windowsBalloonNotifier = new WindowsBalloon({
  withFallback: true
});
 
windowsBalloonNotifier.notify({
    title: "Windows Balloon Notification",
    message: "This notification was sent using Windows Balloons.",
    sound: true,
    time: 1000,
    wait: false,
    type: 'warn'
  },
  function (error, response) {
    console.log(response);
  }
);

Как обычно, мы создаем экземпляр уведомителя и передаем наши параметры функции notify().

Здесь мы можем указать time в миллисекундах, по истечении которых уведомление исчезнет. Мы не будем ждать, пока пользователь выполнит действие против уведомления, поэтому wait установлено значение false.

Кроме того, мы установили для уведомления type значение warn и sound значение true. Это уведомит пользователя как предупреждение. Мы могли бы также использовать info или error в зависимости от того, что вы хотите передать.

Notification Center

Этот репортер предназначен для отправки уведомлений для систем MacOS. Требуется macOS версии 10.8 и выше. Для более ранних версий он будет использовать Growl как запасной вариант. Если Growl не установлен, функция обратного вызова возвращает ошибку.

Чтобы настроить репортер Центра уведомлений, вы можете написать свой код, как показано ниже:

const NotificationCenter = require('node-notifier').NotificationCenter;
// Or
// const NotificationCenter = require('node-notifier/notifiers/notificationcenter');
 
let notificationCenterNotifier = new NotificationCenter({
  withFallback: true
});
 
notificationCenterNotifier.notify({
    title: "Notification Center Notifications",
    subtitle: "For macOS > 10.8",
    message: "This is a notification sent using Notification Center",
    sound: 'Frog',
    icon: path.join(__dirname, 'icon.jpg'),
    contentImage: path.join(__dirname, 'content_image.jpg'),
    open: undefined,
    wait: false,
  },
  function (error, response, metadata) {
    console.log(response, metadata);
  }
);

Параметр sound принимает значения, такие как BassoBlow, Bottle и т.д. Значение по умолчанию равно Bottle если установлен в true. Кроме того, вы можете установить конкретный звук, который вам нравится.

Notify-send

Этот репортер используется для настройки уведомлений для отправки в системе на базе Linux. Его можно использовать, как показано ниже:

const NotifySend = require('node-notifier').NotifySend;
// Or
// const NotifySend = require('node-notifier/notifiers/notifysend');
 
let notifySendNotifier = new NotifySend();
 
notifySendNotifier.notify({
  title: 'Notify-send Notification',
  message: 'This notification was sent using the notify-send reporter',
  icon: __dirname + '/icon.jpg',
  wait: true,
  timeout: 5
});

Заключение

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

В этой статье мы рассмотрели, как использовать node-notifier для отправки уведомлений вашим пользователям.

Источник:

#NodeJS
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить