电子:在纸盘应用程序中显示基本通知

时间:2019-05-16 12:29:52

标签: javascript electron tray

我正在制作纸盘应用程序,并且尝试显示基本通知:

我的main.js文件和package.json在下面:

我的app / main.js文件

 const path = require('path');
    const {
        app,
        globalShortcut,
        Tray,
        Notification
    } = require('electron');

    app.on('ready', () => {
        tray = new Tray(path.join(__dirname, 'icon-light.png'));

        globalShortcut.register('CommandOrControl+Shift+N', () => {
            console.log("Roger");
            let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

            myNotification.onclick = () => {
                console.log('Notification clicked')
            }
        });
    })

我的package.json文件

{
  "name": "test_notification",
  "version": "1.0.0",
  "description": "",
  "main": "app/main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "electron": "^5.0.1"
  }
}

当我触发击键CommandOrControl + Shift + N时,它向我显示console.log而不是通知。

你知道怎么做吗?

2 个答案:

答案 0 :(得分:0)

您错过了以下代码中的new

let myNotification = new Notification('Title', {
                body: 'Rabbit'
            })

参考:https://electronjs.org/docs/tutorial/notifications

答案 1 :(得分:0)

从主进程发送的通知不使用HTML5 Notification API,而是使用Notification模块;这就是为什么提供的代码通过解构Notification的结果来正确获取require('electron')构造函数的原因:

const {
    app,
    globalShortcut,
    Tray,
    Notification
} = require('electron');

但是界面略有不同:

  • constructor仅接受一个options参数,其中包括title

    let myNotification = new Notification({
        title: 'Title',
        body: 'Rabbit'
    });
    
  • 然后必须使用notification.show()明确显示通知:

    myNotification.show();
    
  

notification.show()

     

立即向用户显示通知,请注意这意味着   与HTML5 Notification实现不同,实例化一个   new Notification不会立即向用户显示它,您需要   在操作系统显示它之前调用此方法。