Electron 中 Notification 通知不弹出是怎么回事?

程序猿树行 阅读 71

我在 Electron 主进程里用 new Notification() 发通知,但完全没反应,系统通知栏也没出现。明明之前在浏览器里测试 HTML 的 Notification API 是可以的,难道 Electron 要额外配置什么权限?

我试过加了 app.whenReady() 再调用,也确认了 macOS 的通知中心里我的应用有通知权限,但就是不弹。下面是我在主进程里写的代码:

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

app.whenReady().then(() => {
  const notif = new Notification({
    title: '测试通知',
    body: '这条通知应该会弹出来'
  });
  notif.show();
});

是不是我漏了什么关键步骤?比如要设置 appId 或者在创建窗口时开启某个权限?

我来解答 赞 12 收藏
二维码
手机扫码查看
1 条解答
红彦 Dev
在 Electron 里用 Notification 确实有点坑,特别是主进程直接 new Notification() 的方式。我之前也被这问题困扰过,后来发现要在渲染进程中创建通知才行。

你试试把这段代码移到渲染进程去跑,记得先在主进程的 BrowserWindow 创建时开启 webPreferences 里的 nodeIntegration 和 contextIsolation:


// 在主进程中配置窗口
const win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});


然后在渲染进程中这样写:

new Notification({
title: '测试通知',
body: '这条通知应该会弹出来'
}).show();


如果还是不行,检查下你的 app 的 info.plist 文件(macOS),确保有配置正确的 bundle identifier。electron-builder 打包时一般会自动处理这个,但手动打包的话容易漏。

再提醒一句,macOS 上第一次弹通知可能要用户授权,记得让用户点击一下允许通知的弹窗。复制过去试试看能不能解决问题。
点赞
2026-03-25 23:02