系统通知

优质
小牛编辑
134浏览
2023-12-01

这三个系统都为应用提供了向用户发送通知的API。 Electron允许开发人员使用HTML5 Notification API快速发送通知,并通过当前系统的自带通知API来显示。
注意: 由于这是一个HTML5 API,因此它仅在渲染器进程中可用
1
let myNotification = new Notification('测试标题', {
2
body: '测试通知'
3
})
4

5
myNotification.onclick = () => {
6
console.log('通知已被点击')
7
}
Copied!

虽然跨操作系统的代码和用户体验基本相似,但还是有一些差异。

Windows

  • 在Windows 10中, 可正常通知.

  • 在Windows 8.1 或 Windows 8中, 需要先使用Application User Model ID将快捷方式创建到开始屏幕上.

  • 在Windows 7中, 无法使用通知. 不过你可以使用Tray API发送一个 气泡通知.

另外,在Win8中,通知内容长度不超过250个字节,Windows团队建议小于200个字符.虽然Win10删除了这个限制,但是如果发送过如上千字的长文本将导致异常.

Windows中的高级通知

最新版本的Windows支持使用图文影像元素等自定义模板的高级通知.如需使用此类通知,您可以使用electron-windows-notifications模块来发送 ToastNotificationTileNotification 对象进行实现.
仅仅通知则只需要 electron-windows-notifications就够了, 但是想要处理答复的话,您需要使用electron-windows-interactive-notifications模块进行注册COM组件并根据输入数据调用Electron应用来实现.

macOS

MacOS上的通知是直接转发的,但您应该了解Apple关于通知的人机接口指南
另外,通知内容长度不超过256个字节

macOS中的高级通知

最新版本的macOS支持发送带有快速回复的输入框的通知,如需要这一功能,请使用node-mac-notifier实现

Windows和macOS检测系统是否支持收发通知(静默/演示模式)

您可以使用electron-notification-state模块检测系统是否允许收发通知,这样就可以避免Windows默认忽略通知的情况.

Linux

通知使用 libnotify进行发送, 只要桌面环境支持 [桌面通知规范][notification-spec]即可正常显示, 包括 Cinnamon, Enlightenment, Unity, GNOME, KDE.
[notification-spec]: https://developer.gnome.org/notification-spec/