You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:36:03