Electron集成FCM后点击推送通知如何唤起已最小化的运行中应用
问题描述
我参考相关代码仓库完成了FCM集成,目前功能运行正常。现在需要实现效果:应用已启动但处于最小化状态时,点击推送通知弹窗即可唤起运行中的应用,以下是我当前的通知接收代码:
ipcRenderer.on(NOTIFICATION_RECEIVED, (_, serverNotificationPayload) => { if (serverNotificationPayload.notification.body) { let myNotification = new Notification(serverNotificationPayload.notification.title, { body: serverNotificationPayload.notification.body }); myNotification.onclick = () => { // 此处需要实现点击通知弹窗时唤起最小化的应用 console.log('Notification clicked'); } } else { // payload无body内容 } });
实现方案
- 修改渲染进程代码,在通知点击回调中向主进程发送IPC消息,触发窗口唤起操作
修改后的渲染进程代码:
const { ipcRenderer } = require('electron') // 确保已引入ipcRenderer ipcRenderer.on(NOTIFICATION_RECEIVED, (_, serverNotificationPayload) => { if (serverNotificationPayload.notification.body) { let myNotification = new Notification(serverNotificationPayload.notification.title, { body: serverNotificationPayload.notification.body }); myNotification.onclick = () => { console.log('Notification clicked'); // 向主进程发送唤起窗口的消息 ipcRenderer.send('activate-main-window') } } else { // payload无body内容 } });
- 在主进程中监听对应的IPC消息,操作主窗口实例完成唤起
首先确保主进程中已全局保存了主窗口的引用,然后添加如下监听逻辑:
// 主进程代码,需确保mainWindow是你创建的主窗口实例的引用 ipcMain.on('activate-main-window', () => { if (!mainWindow) return // 如果窗口最小化,恢复窗口状态 if (mainWindow.isMinimized()) mainWindow.restore() // 如果窗口被隐藏(比如最小化到托盘),显示窗口 if (!mainWindow.isVisible()) mainWindow.show() // 将窗口聚焦到系统前台 mainWindow.focus() })
注意:如果你的应用存在多窗口场景,可以按需调整唤起的窗口实例即可。
内容的提问来源于stack exchange,提问作者Jaydeep Mor
相关产品推荐
相关产品推荐

