Las notificaciones pueden convertirse hoy en día en un recurso imprescindible o bien acabar siendo una pesadilla. Cada aplicación que se instala en el teléfono desea tener acceso a las notificaciones, al igual que las aplicaciones de escritorio, y ahora además tenemos un Web Notifications API junto con un Web Push API, esto por si no tuviéramos suficientes notificaciones. Los recordatorios de las citas de calendario son siempre bienvenidas (de lo contrario te olvidarías de casi cada evento) pero, ¿es realmente necesario que Wacky Mini Golf te notifique que no has jugado desde hace 4 días? Probablemente no.
De todas formas, pensando en cómo utilizar las notificaciones para recordar cosas que hacer en un momento determinado del día como ir a comer el almuerzo, ir a dar un paseo en bicicleta o ir a buscar a un hijo a la escuela en un día extraño. Y pensando en JavaScript y buscando la posibilidad de la creación de notificaciones en Mac utilizando Node.js, existe una solución: node-notifier
.
Vamos a conocerlo:
Crear una notificación simple
node-notifier
funciona tanto en Mac como en un Windows PC. Las notificaciones pueden variar desde muy simples a avanzadas por lo que creamos primero una notificación muy simple
const notifier = require('node-notifier'); // String notifier.notify('¡Vaciar la lavadora!'); // Object notifier.notify({ 'title': 'Imaginanet Blog', 'subtitle': 'Mantenimiento diario', 'message': 'Acceder y aprobar los comentarios de los usuarios', 'icon': 'imaginanet-logo.png', 'contentImage': 'blog.png', 'sound': 'ding.mp3', 'wait': true });
Puedes proporcionar a notifier
los elementos básicos como title
, message
o icon
y, si lo deseas, complicarlo un poco más añadiendo una imagen de contenido, un sonido, e incluso controlar los botones que se muestran en la notificación.
Notificaciones avanzadas
Puedes crear notificaciones avanzadas, con muchas características con node-notifier
, incluyendo la capacidad de responder, gestionar las etiquetas de los botones de la notificación, y mucho más. El siguiente es un ejemplo más avanzado:
const NotificationCenter = require('node-notifier').NotificationCenter; var notifier = new NotificationCenter({ withFallback: false, // Use Growl Fallback if <= 10.8 customPath: void 0 // Relative/Absolute path to binary if you want to use your own fork of terminal-notifier }); notifier.notify({ 'title': void 0, 'subtitle': void 0, 'message': 'Pulsa “Responder” para enviar un mensaje de respuesta', 'sound': false, // Case Sensitive string para la ubicación del archivo de sonido, o utilizar uno de los sonidos nativos de macOS (ver a continuación) 'icon': 'Terminal Icon', // Ruta absoluta para el icono de acción 'contentImage': void 0, // Ruta absoluta para la imagen adjunta (Content Image) 'open': void 0, // URL que se abre al hacer clic 'wait': false, // Espera la acción del usuario contra la notificación o el tiempo de espera. Igual que timeout = 5 segundos // Nuevo en la última versión. Ver `example/macInput.js` para su uso timeout: 5, // Tiene prioridad sobre la espera si ambos están definidos. closeLabel: void 0, // String. Etiqueta para el botón Cancelar actions: void 0, // String | Array<String>. Etiqueta de acción o lista de etiquetas en caso de desplegable dropdownLabel: void 0, // String. Etiqueta que se utilizará si son varias acciones reply: false // Boolean. Si la notificación debe tomar un input. Valor enviado como tercer argumento en la devolución de llamada y el emisor de sucesos. }, function(error, response, metadata) { console.log(error, response, metadata); });
He aquí un ejemplo rápido sobre el tipo de acciones que puedes hacer con las notificaciones:
Eventos
node-notifier
es capaz de enviar eventos click
y close
, algo muy práctico para desencadenar acciones específicas en función de cómo interactúe el usuario con la notificación:
// Abrir la web de imaginanet notifier.on('clic', (obj, options) => { const spawn = require('child_process').spawn; const cmd = spawn('abrir', ['https://imaginanet.com']); }); notifier.on('cerrar', (obj, options) => {});
El ejemplo anterior permite hacer clic en la notificación para poner en marcha tu página web; también se podría usar esto para desencadenar otras rutinas en tu máquina, por supuesto, simplemente depende de para qué sea la notificación.
Puedes obtener resultados muy avanzados con los objetos de notificación y los eventos, así que asegúrate de revisar la node-notifier
API si realmente quieres profundizar en el tema.
Comentarios