Envío de notificaciones con notificador de node (Mac, Windows, Linux)

E

Introducción

Las notificaciones brindan una excelente manera de involucrar a los usuarios de sus aplicaciones y se pueden usar para proporcionar o solicitar comentarios. En este tutorial, examinaremos cómo enviar notificaciones usando Node.js y node-notifier.

node-notifier es una biblioteca para enviar notificaciones nativas multiplataforma en Node JS.

Crear una notificación con notificador de node

Creemos un directorio para nuestro proyecto e inicialicemos un proyecto de node con la configuración predeterminada en él:

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

A continuación, en el index.js archivo, importaremos node-notifier:

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

Hay dos formas de crear y enviar una notificación simple usando node-notifier. Pasando una String al notify() función:

notifier.notify('Hello!');

O, alternativamente, puede pasar un objeto y establecer atributos como el title y message:

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

Ejecutemos este código para ver la notificación en acción:

$ node index.js

Las notificaciones se colocan en capas sobre la pantalla de nuestro escritorio y podemos ver los dos mensajes que hemos enviado:

Personalización de notificaciones

Aparte de la title y message opciones, también puede establecer una icon para aparecer, use sound para agregar un sonido de notificación o usar wait para esperar una acción del usuario …

los sound y wait son false por defecto.

Agreguemos un ícono, que puede ser cualquier archivo de imagen, así como un sonido a nuestra notificación. Además, esperaremos a que el usuario también realice una acción:

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);
  }
);

En el código anterior, incluimos el path módulo para ayudarnos a obtener la ruta a nuestro archivo. También estamos pasando una función de devolución de llamada al notify() función y registrando la respuesta o interacción del usuario con nuestra notificación a la consola.

Al ejecutar el código anterior, recibirá una notificación con la imagen que ha elegido como icono de la notificación. El sonido de una nueva notificación también puede ir acompañado de la pantalla de notificación, según el sistema operativo del sistema operativo de su computadora y la versión.

La notificación se verá así:

Si hace clic en el botón para descartar la notificación, la cadena dismissed se registrará en su consola. Si no hay interacción con la notificación hasta que desaparece, se muestra timeout. Si se hace clic en la notificación, se registra undefined a la consola.

Opciones de personalización para diferentes plataformas

Como se indicó en la sección anterior, puede haber variaciones en el comportamiento de las notificaciones enviadas debido a diferencias en los sistemas de informes utilizados por el sistema operativo del usuario.

node-notifer intenta utilizar el sistema con la mejor experiencia de usuario pero prefiere las soluciones nativas. Proporciona alternativas para cada plataforma según se define en su flujo de decisiones.

Sin embargo, puede crear un informador personalizado para cada uno de los sistemas de informes para tener control sobre el comportamiento de las notificaciones que envía en su aplicación. Hay cinco reporteros: Centro de notificaciones, Tostadora de Windows, Globos de Windows, Gruñidoy notificar-enviar.

los wait La opción no se aplica cuando se usa Windows Toaster o notificar-enviar reporteros ya que Windows Toasters siempre espera y notificar-enviar no admite la wait opción.

los sound La opción solo se puede usar para Centro de notificaciones y Tostadora de Windows reporteros. los icon La opción toma la ruta absoluta al archivo de imagen y no funciona para Globo de Windows reportero.

Gruñido

Este es el reportero que es el respaldo cuando otros reporteros fallan o no están disponibles para el sistema operativo. Se basa en el código abierto Growly paquete y envía mensajes usando el Gruñido utilidad para enviar notificaciones nativas.

Agregue lo siguiente a su código para personalizar Growl Reporter para su aplicación:

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
});

En el código anterior, estamos creando un nuevo Growl instancia con algunas opciones configuradas, como su nombre, el host y el puerto en el que se ejecutará.

A continuación, llamamos al notify() método con nuestras opciones habituales. Growl nos presenta algunas opciones más, que están documentadas aquí.

Tostadora de Windows

Este es un reportero específicamente para el sistema operativo Windows que admite notificaciones desde Windows 8 y versiones posteriores.

Usemos el reportero de Windows Toaster para enviar una notificación:

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);
  }
);

Aquí, estamos instanciando un WindowsToaster ejemplo, estableciendo el withFallback argumento como true. Si este notificador no funciona, recurrirá a Growl o Windows Balloons.

Entonces llamamos al .notify() método con las opciones habituales.

Globo de Windows

Este es un reportero específicamente para todas las versiones del sistema operativo Windows por debajo de Windows 8. Utiliza globos de la barra de tareas para mostrar notificaciones. Para personalizar las opciones para este reportero específicamente, puede escribir su código así:

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);
  }
);

Como de costumbre, estamos construyendo una instancia del notificador y pasando nuestras opciones al notify() función.

Aquí, podemos especificar el time en milisegundos, después de lo cual la notificación desaparecerá. No esperaremos a que el usuario realice una acción contra la notificación, por lo que wait se establece en false.

Además, hemos configurado la notificación type a warny sound a true. Esto notificará al usuario como una advertencia. También podríamos haber usado info o error dependiendo de lo que le gustaría transmitir.

Centro de notificaciones

Este informador es para enviar notificaciones para sistemas macOS. Requiere macOS versión 10.8 anterior. Para versiones anteriores, utilizará Growl como respaldo. Si Growl no está instalado, se devuelve un error en la función de devolución de llamada.

Para configurar el reportero del Centro de notificaciones, puede escribir su código como se muestra a continuación:

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);
  }
);

los sound parámetro toma un montón de valores como Basso, Blow, Bottle, etc. El valor predeterminado es Bottle si se establece en true. Alternativamente, puede configurar un sonido específico que desee.

Notificar-enviar

Este reportero se utiliza para personalizar notificaciones para enviar en un sistema basado en Linux. Se puede utilizar como se muestra a continuación:

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
});

Conclusión

Las notificaciones proporcionan una forma para que los usuarios interactúen con sus aplicaciones y las notificaciones nativas son aquellas que se muestran en el escritorio de los usuarios en lugar de mostrarse en el navegador.

En este artículo, hemos cubierto cómo usar node-notifier para enviar notificaciones a sus usuarios.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad