Systémová upozornění s Node.js

Oznámení mohou být v dnešní době darem z nebes nebo prokletí naší existence. Každá aplikace, kterou si nainstalujete do telefonu, vyžaduje přístup k oznámením, stejně jako aplikace pro stolní počítače, a nyní máme rozhraní Web Notifications API společně s rozhraním Web Push API, pro případ, že byste v životě ještě neměli dostatek oznámení. Připomenutí schůzek z Kalendáře jsou vždy vítána (jinak bych zapomněl na každou událost), ale opravdu mě musí Wacky Mini Golf upozornit, že jsem 4 dny nehrál? Pravděpodobně ne.

Každopádně jsem přemýšlel o oznámeních a o tom, jak bych je mohl použít k zapamatování věcí, které jsem potřeboval udělat v určitou dobu během aktuálního dne; připomenout si, že se mám jít naobědvat, projet se na kole nebo jít vyzvednout syna ze školy v lichý den. Jako odborník na JavaScript jsem se rozhodl podívat se na vytváření oznámení pro Mac pomocí Node.js a rychle jsem našel svou odpověď:node-notifier ! Pojďme se podívat!

Vytvořte jednoduché oznámení

node-notifier funguje na počítačích Mac i Windows. Oznámení se mohou pohybovat od velmi jednoduchých až po pokročilá, proto nejprve vytvořte velmi jednoduché oznámení:

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

// String
notifier.notify('Go empty the dishwasher!');

// Object
notifier.notify({
  'title': 'David Walsh Blog',
  'subtitle': 'Daily Maintenance',
  'message': 'Go approve comments in moderation!',
  'icon': 'dwb-logo.png',
  'contentImage': 'blog.png',
  'sound': 'ding.mp3',
  'wait': true
});

Můžete uvést notifier základy jako title , message a icon , pak přejděte dále a přidejte obrázek obsahu, zvuk a dokonce ovládejte tlačítka, která se zobrazují v oznámení.

Pokročilá upozornění

Pomocí node-notifier můžete vytvářet pokročilá oznámení s mnoha funkcemi , včetně možnosti odpovídat, ovládat popisky tlačítek oznámení a další. Následuje pokročilejší příklad:

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': 'Click "reply" to send a message back!',
  'sound': false, // Case Sensitive string for location of sound file, or use one of macOS' native sounds (see below)
  'icon': 'Terminal Icon', // Absolute Path to Triggering Icon
  'contentImage': void 0, // Absolute Path to Attached Image (Content Image)
  'open': void 0, // URL to open on Click
  'wait': false, // Wait for User Action against Notification or times out. Same as timeout = 5 seconds

  // New in latest version. See `example/macInput.js` for usage
  timeout: 5, // Takes precedence over wait if both are defined.
  closeLabel: void 0, // String. Label for cancel button
  actions: void 0, // String | Array<String>. Action label or list of labels in case of dropdown
  dropdownLabel: void 0, // String. Label to be used if multiple actions
  reply: false // Boolean. If notification should take input. Value passed as third argument in callback and event emitter.
}, function(error, response, metadata) {
  console.log(error, response, metadata);
});

Zde je stručný přehled typů akcí, které mohou vaše oznámení provádět:

Události

node-notifier je schopen odeslat click a close události – užitečné pro spouštění konkrétních akcí v závislosti na tom, jak uživatel s oznámením interaguje:

// Open the DWB website!
notifier.on('click', (obj, options) => {
  const spawn = require('child_process').spawn;
  const cmd = spawn('open', ['https://davidwalsh.name']);
});

notifier.on('close', (obj, options) => {});

Výše uvedený příklad mi umožňuje kliknout na oznámení a spustit svůj web; lze to také použít ke spouštění dalších rutin na svém počítači, samozřejmě to záleží jednoduše na tom, k čemu je oznámení určeno.

Můžete získat velmi podrobné informace o svých objektech a událostech oznámení na platformě, takže se nezapomeňte podívat na node-notifier API, pokud chcete opravdu kopat hluboko. Nebo pokud jste rozumný člověk, možná vynechejte další oznámení ve svém životě!