单击通知时如何阻止 Windows Electron 应用程序打开新窗口?

问题描述 投票:0回答:1

我有一个在 Windows 上运行的 electrojs 应用程序。当我单击 Windows 通知时,它总是为我的应用程序打开一个新窗口。我如何阻止这个并自己处理窗口创建?

我的代码,在主流程中,如下所示:

let notif = new Notification({
  title: ...
  body: ...
});

notif.on('click', (e) => {
  e.preventDefault(); // Shouldn't this stop windows from opening a new window? 
  ... 
});

notif.show();

所有这些都运行良好。将显示通知,并触发单击处理程序。但无论如何都会打开一个新窗口。

我打开新窗口的唯一其他地方是应用程序“激活”,但即使单击通知正在激活应用程序,也永远不会打开第二个窗口。

app.on('activate', () => {
  if (app.isReady() && BrowserWindow.getAllWindows().length == 0) {
    createWindow();
  }
});

更奇怪的是,当我使用

electron-forge start
进行测试时,只有在使用
@electron-forge/maker-appx
进行构建并通过 Windows 商店分发之后,才发生这种情况。

windows notifications electron electron-forge
1个回答
0
投票

我们最终使用

process.platform
来分离 Mac 和 PC 通知处理。然后在电脑上手动设置
toastXml

这似乎有效,并且单击时不会打开新窗口。

let notif = new Notification({
  silent: true,
  toastXml: `
    <toast activationType="protocol" launch="myapp://app/${route}">
      <visual>
        <binding template="ToastGeneric">
          <text>${title}</text>
          <text>${body}</text>
        </binding>
      </visual>
    </toast>`
});
notif.show();
© www.soinside.com 2019 - 2024. All rights reserved.