electron 电子通知API“点击”事件不工作

0s0u357o  于 2023-11-15  发布在  Electron
关注(0)|答案(3)|浏览(252)

我有一个问题,experimental electron notification API不提交'点击'事件,或者我只是使用它的错误,但我想明确的是,这是新的通知系统,运行在主进程中,而不是在渲染进程中:
我的代码:

notification = new Notification({title: "Message Received",body: "message body"}).show()
// The above works and a notification gets made

notification.on('click', (event, arg)=>{
  console.log("clicked")
})

// The above gives an error about 'on' not being defined

字符串
尝试的东西:

notification.once('click', (event, arg)=>{
  console.log("clicked")
})
notification.onclick = () =>{
  console.log("clicked")
}
hmmo2u0o

hmmo2u0o1#

在你的代码中有一个小缺陷:现在,变量notification没有接收到对new Notification()的调用的结果,而是接收到对show()的调用的结果,即undefined(什么也不返回)。
通过将代码行拆分为两个语句,这是相当容易修复的:

notification = new Notification({title: "Message Received",body: "message body"})

notification.show()

notification.on('click', (event, arg)=>{
  console.log("clicked")
})

字符串

hfyxw5xn

hfyxw5xn2#

你需要在调用show方法之前处理click事件。下面的代码在我的Electron 10.1.1上工作(不确定在此停止工作之前你可以追溯到多远)

notification = new Notification({ title: "Test Title", body: "Test Body" });

notification.on('click', (event, arg) => {
  console.log("clicked");
});

notification.show();

字符串

6gpjuf90

6gpjuf903#

我也遇到了这个问题,它磨损了很多神经.这个问题是Windows操作系统的问题.点击处理程序在开发模式下工作,但在prod中构建后不工作.但我找到了解决方案.也许它会对你有帮助.问题是你的appId之间缺少,所以通知和点击它没有与你的应用程序的连接.
如何解决这个问题:在你的forge.config.js中找到你的appBundleId或设置它:

packagerConfig: {
    appBundleId: 'my.app.id',
    ...
}

字符串
然后在main process中你应该写:

app.on('ready', () => {
    if (process.platform === 'win32') {
      app.setAppUserModelId('my.app.id');
    }
    createWindow();
    createNotification();
  });


在那之后,你的通知点击列表将不仅在开发中工作,但在生产!我希望我的解决方案对你有用。

相关问题