Electron 中 Notification 通知不弹出是怎么回事?
我在 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 或者在创建窗口时开启某个权限?
你试试把这段代码移到渲染进程去跑,记得先在主进程的 BrowserWindow 创建时开启 webPreferences 里的 nodeIntegration 和 contextIsolation:
然后在渲染进程中这样写:
如果还是不行,检查下你的 app 的 info.plist 文件(macOS),确保有配置正确的 bundle identifier。electron-builder 打包时一般会自动处理这个,但手动打包的话容易漏。
再提醒一句,macOS 上第一次弹通知可能要用户授权,记得让用户点击一下允许通知的弹窗。复制过去试试看能不能解决问题。