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

Введение Уведомления предоставляют отличный способ привлечь пользователей ваших приложений и могут использоваться для предоставления или запроса обратной связи. В этом руководстве мы рассмотрим, как отправлять уведомления с помощью Node.js и node-notifier. node-notifier [https://www.npmjs.com/package/node-notifier] - это библиотека для отправки кроссплатформенных нативных уведомлений в Node JS. Создание уведомления с помощью node-notifier. Давайте создадим каталог для нашего проекта и инициализируем проект Node с настройкой по умолчанию.

Вступление

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

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

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

Создадим каталог для нашего проекта и инициализируем в нем проект 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 

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

отправка уведомлений с помощьюnode-notifier{.ezlazyload}

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

Помимо 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() и регистрируем ответ или взаимодействие пользователя с нашим уведомлением в консоли.

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

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

уведомление со значком с помощьюузла-уведомителя{.ezlazyload}

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

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

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

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

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

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

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

Рычание

Это репортер, который является запасным вариантом, когда другие репортеры не работают или недоступны для ОС. Он основан на пакете 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

Это репортер специально для ОС 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

Это репортер специально для всех версий ОС 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 зависимости от того, что вы хотите передать.

Центр уведомлений

Этот репортер предназначен для отправки уведомлений для систем 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 принимает множество значений, таких как Basso , Blow , Bottle и т. Д. Значение по умолчанию - Bottle если установлено значение true . Кроме того, вы можете установить определенный звук, который вам нужен.

Уведомить-отправить

Этот репортер используется для настройки уведомлений для отправки в системе на базе 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 для отправки уведомлений вашим пользователям.

comments powered by Disqus