将值传递给节点/电子应用程序通知中操作按钮的回调函数?超时后回调函数也不起作用

分享于2022年07月17日 electron node-notifier node.js notifications 问答
【问题标题】:将值传递给节点/电子应用程序通知中操作按钮的回调函数?超时后回调函数也不起作用(Pass values to callback functions of action buttons in notification in node/electron application? Also callback functions not working after timeout)
【发布时间】:2022-04-28 09:58:30
【问题描述】:

在节点/电子应用程序中,使用 node-notifier 来显示通知,效果很好。然后,添加了“确定”和“取消”按钮,以及它们各自的回调函数。回调函数也按预期工作,直到用户错过任何通知和通知超时。通知超时后,会移动到(windows 10的情况下)通知侧边栏,并显示通知的标题和消息,按钮也可见,但按钮不起作用,甚至console.log也不行。

第二个问题是我无法找到将参数/值传递给回调函数的方法。下面是代码:

const notifier = require('node-notifier')

 notifier.notify({
    title: title,
    message: message,
    icon: path.join(__dirname, 'logo.jpg'),
    actions: ['Ok','Cancel'],
    wait: true,
     },function(err, response, metadata){
        // Response is response from notification
        // Metadata contains activationType, activationAt, deliveredAt
        console.log(err, response, metadata);
     });

// Notifier Default events
 notifier.on('click', function(notifierObject, options, event){
    // Triggers if `wait: true` and user clicks notification
    console.log('"Clicked" on notification' , notifierObject, options, event);
 });

// Notifier Button actions
notifier.on('ok', function(notifierObject, options, event){     
    console.log('"OK" pressed', notifierObject, options, event);
});

notifier.on('cancel', function(notifierObject, options, event){
    console.log('"Cancel" pressed', notifierObject, options, event);
});


【解决方案1】:

帮助提问者可能为时已晚,但如果其他人遇到这个问题:

我怀疑您的第一个问题与此有关:

在 Windows 10 上,必须将带有应用程序用户模型 ID 的应用快捷方式安装到“开始”菜单。这在开发过程中可能有点过分,因此将 node_modules\electron\dist\electron.exe 添加到您的开始菜单也可以解决问题。导航到资源管理器中的文件,右键单击并“固定到开始菜单”。然后,您需要将行 app.setAppUserModelId(process.execPath) 添加到您的主进程以查看通知。

https://www.electronjs.org/docs/latest/tutorial/notifications#:~:text=On%20Windows%2010,to%20see%20notifications