JavaScript >> Javascript 文檔 >  >> JavaScript

使用節點通知器發送通知(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

通知分層顯示在我們的桌面屏幕上,我們可以看到我們推送的兩條消息:

自定義通知

除了 titlemessage 選項,你也可以設置一個icon 要出現,請使用 sound 添加通知聲音或使用 wait 等待用戶操作..

soundwaitfalse 默認情況下。

讓我們在通知中添加一個圖標,它可以是任何圖像文件,也可以是聲音。此外,我們還將等待用戶執行操作:

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() 函數並將響應或用戶交互與我們的通知一起記錄到控制台。

運行上面的代碼,您將收到一個通知,其中包含您選擇作為通知圖標的圖像。根據您計算機的操作系統 OS 和版本,通知顯示也可能伴隨新通知的聲音。

通知將如下所示:

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

如果單擊按鈕關閉通知,則字符串 dismissed 將記錄到您的控制台。如果在通知消失之前沒有與通知交互,則顯示 timeout .如果單擊通知本身,則會記錄 undefined 到控制台。

不同平台的自定義選項

如上一節所述,由於用戶操作系統使用的報告系統不同,發出的通知的行為可能會有所不同。

node-notifer 嘗試使用具有最佳用戶體驗的系統,但它更喜歡原生解決方案。它為每個平台提供決策流程中定義的回退。

但是,您可以為每個報告系統創建自定義報告器,以控制您在應用程序中發送的通知的行為。有五個記者:通知中心 , Windows 烤麵包機 , 窗口氣球 , 咆哮 , 和 通知發送 .

wait 使用 Windows Toaster 時選項不適用 或 通知發送 記者作為 Windows 烤麵包機總是等待並通知發送 不支持 wait 選項。

sound 選項只能用於通知中心Windows 烤麵包機 記者。 icon 選項採用圖像文件的絕對路徑,不適用於 Windows Balloon 記者。

咆哮

這是當其他報告器失敗或對操作系統不可用時作為後備的報告器。它基於開源的 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 8 的所有 Windows 操作系統版本的報告器。它使用任務欄氣球來顯示通知。要專門為此記者定制選項,您可以這樣編寫代碼:

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 .

另外,我們設置了通知 typewarn , 和 soundtrue .這將通知用戶作為警告。我們也可以使用 infoerror 看你想表達什麼。

通知中心

此報告器用於發送 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 向您的用戶發送通知。


Tutorial JavaScript 教程
  1. 初學者指南:創建和使用 JavaScript ES6 模塊

  2. 在同一頁面上打開第三方實時聊天而不打開單獨的窗口

  3. 修復 Rails 中的 node-sass 問題 - 節點降級有幫助

  4. React 中的狀態管理

  5. 如何使用 Typescript 構建 Express 和 Node.js 應用程序

  6. Covid數據可視化應用三JS-【代碼概覽】

  7. 使用 api 從段落中選擇一個元素

  1. 在 GatsbyJS 中,將 props 傳遞給鏈接頁面時,如何設置 defaultProp?

  2. React 的 onClick 事件處理程序解釋

  3. 帶有符號的 JavaScript 魔法

  4. Javascript Date - 只設置日期,忽略時間?

  5. 沒有從反應中導入反應。這是為什麼!

  6. 一組不斷增長的獨特 SVG 圖標。 💁‍♀️ 野獸派設計,香草 CSS,200 毫秒頁面加載。

  7. 函數式編程原理

  1. 5+ 像素化和圖像模糊 jQuery 插件

  2. 6 門尖端反應課程

  3. 宣布 NSolid 版本 3.11.1

  4. 增量壓縮:差異算法和增量文件格式的實用指南