人生的价值,并不是用时间,而是用深度去衡量的。 ——<列夫·托尔斯泰>
介绍
通知是一种吸引用户使用应用的好方法,可以用来提供或征求反馈。在本教程中,我们将研究如何使用Node.js
和 node-notifier
发送通知。
在Node JS中,Node-notifier是一个用于发送跨平台本机通知的库。
Node-notifier https://www.npmjs.com/package/node-notifier
使用node-notifier创建通知
首先,我们创建一个目录,并使用默认设置初始化一个 Node 项目:
1 | $ mkdir node-native-notifications && cd node-native-notifications |
接下来,在 index.js
文件中,我们导入 node-notifier
:
1 | const notifier = require('node-notifier'); |
我们运行这段代码,看看通知的作用,终端执行:
1 | $ node index.js |
通知在我们的桌面屏幕上显示,我们可以看到推送的两条消息
自定义通知
除了标题和消息选项之外,您还可以设置要出现的图标,使用声音来添加通知声音或使用 wait
来等待用户操作,
默认情况下,sound
和 wait
是 false
。
我们添加一个图标,它可以是任何图像文件,以及通知的声音。另外,我们也会等待用户执行一个动作:
1 | const path = require('path'); |
在上面的代码中,我们包含了 path
模块,以帮助我们获得文件的路径。我们还将一个回调函数传递给 notify()
函数,并将响应或用户交互记录到控制台。
运行上面的代码,您将得到一个带有您选择的作为通知图标的图像的通知。根据您计算机的操作系统和版本,可能还会伴随着新通知的声音显示。
如果您单击按钮取消通知,则取消的字符串将被记录到控制台。如果没有与通知的交互,直到它消失,它显示超时。如果通知本身被单击,它将未定义地记录到控制台。
为不同平台定制选项
如前一节所述,由于用户操作系统使用的报告系统不同,发送的通知的行为可能会有所不同。
node-notification
尝试使用具有最佳用户体验的系统,但它更喜欢本地解决方案。它为每个平台提供决策流中定义的回退。
https://github.com/mikaelbr/node-notifier/blob/HEAD/DECISION_FLOW.md
但是,您可以为每个报告系统创建一个定制的报告程序,以控制您在应用程序中发送的通知的行为。有五个: Notification Center, Windows Toaster, Windows Balloons, Growl, and notify-send.
。
当使用 Windows Toaster
或通知发送通知时,await
选项不适用,因为 Windows Toaster
总是等待,而通知发送不支持 await
选项。
sound
选项只能用于通知中心和 Windows Toaster
通知。图标选项接受图像文件的绝对路径,并且不适用于 Windows Balloons
。
Growl
当其他报告器失败或无法用于该操作系统时,该报告器可以作为备用报告器。它构建在开源的Growly包上,并使用Growl实用程序发送消息来发送本地通知。
在你的代码中添加以下内容,为你的应用程序定制Growl报告:
1 | const fs = require('fs); |
在上面的代码中,我们创建了一个新的 Growl
实例,并设置了一些选项,比如它的名称、主机和将要运行它的端口。
接下来,我们使用常用选项调用 notify()
方法。Growl
向我们介绍了更多的选项,这些选项在这里被记录下来。
Windows Toaster
这是一个专门为Windows操作系统的记者,它支持通知自Windows 8
和更新。
让我们使用 Windows Toaster
来推送一个通知:
1 | const WindowsToaster = require('node-notifier').WindowsToaster; |
这里,我们正在实例化一个WindowsToaster
实例,将 withFallback
参数设置为 true
。如果这个通知不工作,它将回落到Growl
或Windows Balloons
。
然后我们用常用的选项调用 .notify()
方法。
Windows Balloon
这是一个专门针对Windows 8以下所有Windows操作系统版本的记者。它使用任务栏气球来显示通知。要特别为这个报告器定制选项,您可以这样编写代码:
1 | const WindowsBalloon = require('node-notifier').WindowsBalloon; |
像往常一样,我们构造了一个通知器的实例,并将我们的选项传递给notify()
函数。
在这里,我们可以指定以毫秒为单位的时间,之后通知将消失。我们不会等待用户对通知执行操作,所以wait
设置为false
。
同时,我们将通知type
设置为warn
,sound
设置为true
。这将以警告的形式通知用户。我们也可以使用info
或error
,这取决于你想表达什么。
通知中心
这个是为macOS
系统发送通知。它需要 macOS版本10.8
以上。对于早期版本,它将使用咆哮作为后备。如果没有安装Growl
,回调函数会返回一个错误。
要设置通知中心报告器,您可以编写如下代码:
1 | const NotificationCenter = require('node-notifier').NotificationCenter; |
sound
参数包含一系列数值,如Basso, Blow, Bottle
等。如果设置为true,默认值是Bottle。或者,你可以设置你喜欢的特定声音。
Notify-send
用于在基于 Linux
的系统上定制要发送的通知。可以如下图所示使用:
1 | const NotifySend = require('node-notifier').NotifySend; |
结论
通知为用户提供了一种与应用程序交互的方式,本地通知是那些显示在用户桌面而不是显示在浏览器中的通知。
在本文中,我们介绍了如何使用node-notifier向用户发送通知。
参考
- https://stackabuse.com/sending-notifications-with-node-notifier-mac-windows-linux/
- node-notifier https://www.npmjs.com/package/node-notifier
- node-mac-notifier https://www.npmjs.com/package/node-mac-notifier
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!