通知(Notifications)

    对于渲染进程,Electron 方便地允许开发者使用 发送通知,然后使用当前运行中的系统的原生通知 API 来进行显示。

    要在主进程中显示通知,您需要使用 Notification 模块。

    从 示例的应用程序开始,将以下行添加到 文件:

    并添加 renderer.js 文件:

    docs/fiddles/features/notifications/renderer (23.0.0)

    • main.js
    • index.html
    • renderer.js
    1. const { app, BrowserWindow } = require('electron')
    2. function createWindow () {
    3. const win = new BrowserWindow({
    4. width: 800,
    5. })
    6. win.loadFile('index.html')
    7. }
    8. app.whenReady().then(createWindow)
    9. app.on('window-all-closed', () => {
    10. if (process.platform !== 'darwin') {
    11. }
    12. })
    13. app.on('activate', () => {
    14. if (BrowserWindow.getAllWindows().length === 0) {
    15. createWindow()
    16. }
    17. })
    1. const NOTIFICATION_TITLE = 'Title'
    2. const CLICK_MESSAGE = 'Notification clicked!'
    3. new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY })
    4. .onclick = () => document.getElementById("output").innerText = CLICK_MESSAGE

    启动 Electron 应用程序后,您应该能看到通知:

    从 中的应用开始,将以下内容更新到 main.js

    docs/fiddles/features/notifications/main (23.0.0)

    • main.js
    • index.html
    1. <!DOCTYPE html>
    2. <head>
    3. <meta charset="UTF-8">
    4. <title>Hello World!</title>
    5. <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
    6. </head>
    7. <body>
    8. <h1>Hello World!</h1>
    9. <p>After launching this application, you should see the system notification.</p>
    10. </body>
    11. </html>

    启动 Electron 应用程序后,您应该能看到系统通知:

    主进程中的通知

    虽然操作系统的代码和用户体验相似,但依然存在微妙的差异。

    • 在 Windows 10 上,您的应用程序的快捷方式必须安装到启动菜单中,包含一个 Application User Model ID.aspx). 这在开发过程中可能是多余的,因为将 node_modules\electron\dist\electron.exe 添加到您的开始菜单也可以解决问题。 导航到资源管理器中的文件,右键单击并选择 “固定到开始菜单”。 然后您需要添加 app.setAppUserModelId(process.execPath) 到主进程才能看到通知。

    Electron尝试将应用程序用户模型 ID 的相关工作自动化。 Electron在和安装和更新框架 Squirrel 协同使用的时候,。 更棒的是,Electron 会自动检测 Squirrel 的存在,并且使用正确的值来自动调用app.setAppUserModelId()。 在开发的过程中, 你可能需要自己调用app.setAppUserModelld()

    高级通知

    Windows 的更高版本允许高级通知,自定义模板,图像和其他灵活元素。 要发送这些通知(来自主进程或渲染器进程),请使用用户区模块 electron-windows-notifications 来用原生节点附件发送 ToastNotificationTileNotification 对象。

    免打扰模式 / 演示模式

    如果要检测是否允许发送通知,请使用 electron-notification-state 模块。

    这样,您可以提前确定 Windows 是否会将通知忽略。

    MacOS上的通知是最直接的,但你应该注意苹果关于通知的人机接口指南(Apple’s Human Interface guidelines regarding notifications).

    请注意,通知的大小限制为256个字节,如果超过该限制,则会被截断。

    勿扰 / 会话状态

    要检测是否允许发送通知,请使用用户区模块 electron-notification-state

    这样可以提前检测是否显示通知。

    通知是通过发送的,libnotify可以在任何实现了桌面通知规范(Desktop Notifications Specification)的桌面环境中发送通知,包括Cinnamon、Enlightenment、Unity、GNOME、KDE