当前位置: 首页 > news >正文

Electron + Vue 实现系统消息通知与点击跳转页面

Electron + Vue 实现系统消息通知与点击跳转页面

在 Electron 应用开发中,系统通知(Notification)是提高用户体验的重要手段。配合 Vue 路由实现“点击通知跳转到指定页面”,可以满足如消息提醒、任务完成、系统告警等多种业务场景。

本文将基于 electron-vite-vue 项目,介绍如何:

  • ✅ 从渲染进程触发系统通知
  • ✅ 在主进程监听通知点击事件
  • ✅ 跳转应用内指定页面

📦 项目结构概览

electron-vite-vue/
├── electron/
│   ├── main/
│   │   └── notification.ts     ← 通知与点击逻辑
│   ├── preload/
│   │   └── index.ts            ← 暴露 sendNotification API
├── src/
│   ├── App.vue                 ← 触发按钮
│   ├── router/index.ts         ← 监听跳转

🔧 主进程:发送通知并监听点击

electron/main/notification.ts 中:

import { Notification, BrowserWindow, ipcMain } from 'electron'export function setupNotification(win: BrowserWindow) {ipcMain.on('notify-with-path', (_, { title, body, path }) => {const notification = new Notification({title,body,// @ts-ignoredata: path,})notification.on('click', () => {if (win.isMinimized()) win.restore()win.show()win.focus()const targetPath = notification.datawin.webContents.send('navigate-to', targetPath)})notification.show()})
}

并在主入口中引入:

import { setupNotification } from './notification'
setupNotification(win)

🛡️ preload 层:暴露 sendNotification 方法

electron/preload/index.ts 中:

contextBridge.exposeInMainWorld('electronAPI', {sendNotification: (title: string, body: string, path: string) => {ipcRenderer.send('notify-with-path', { title, body, path })},onNavigate: (cb: (path: string) => void) => {ipcRenderer.on('navigate-to', (_, path) => cb(path))}
})

🧪 渲染进程:发送通知 + 监听跳转

App.vue

<template><button @click="sendNotice">发送通知</button>
</template><script setup lang="ts">
function sendNotice() {window.electronAPI.sendNotification('有新消息','点击查看详情','/notice/detail/42')
}
</script>

🧭 Vue Router 中监听跳转事件

main.tsApp.vue 中:

import router from './router'window.electronAPI.onNavigate((path) => {router.push(path)
})

🧠 补充:通知权限处理建议

在首次发送通知前,可判断是否已有权限:

if (Notification.permission === 'granted') {new Notification('标题', { body: '内容' })
} else if (Notification.permission !== 'denied') {Notification.requestPermission().then(permission => {if (permission === 'granted') {new Notification('标题', { body: '内容' })}})
}

注意:Electron 无法跳转系统设置页面,需要用户手动开启通知权限。


✅ 总结

通过上述封装,我们实现了:

  • ✅ 渲染进程安全调用系统通知
  • ✅ 主进程监听通知点击并发出跳转事件
  • ✅ Vue 路由完成页面跳转

该结构清晰、易扩展,适用于消息提醒、通知中心、工作流等 Electron 应用场景。


如需了解更多 Electron 通信结构封装,建议阅读:

👉 Electron IPC 通信三层封装实践

欢迎点赞、收藏、分享 🙌

相关文章:

  • 如何实现从网页一键启动你的 Electron 桌面应用(zxjapp://)
  • 汽车零部件的EMI抗扰性测试
  • GStreamer (三)常⽤插件
  • word文档中如何在方框中打✔
  • 计算机视觉与深度学习 | Python实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据
  • eMMC深度解析:嵌入式多媒体卡的硬件电路设计要点
  • 软考 系统架构设计师系列知识点之杂项集萃(63)
  • 大语言模型 13 - 从0开始训练GPT 0.25B参数量 MiniMind2 补充 训练开销 训练步骤 知识蒸馏 LoRA等
  • 核保核赔的集中管理方案
  • 三键标准、多键usb鼠标数据格式
  • 【工具】Windows|外接的显示器怎么用软件调亮度(Brightness Slider)
  • 应用服务器发生内存溢出怎么办
  • 大模型在股骨干骨折诊疗全流程中的应用研究报告
  • 澳大利亚TikTok网络专线+本地化策略:澳洲电商品牌的破局之道
  • Qt—模态与非模态对话框
  • [长城杯 2024]anote
  • Conda 环境下安装 GCC 和 glibc (crypt.h) 教程
  • 数据仓库面试题合集②】ETL 设计与调度策略详解
  • iOS解码实现
  • 【常用算法:查找篇】11.DFS与BFS核心原理及实战全解析
  • 确诊前列腺癌后,拜登首次发声
  • 两名游客刻划八达岭长城,被拘5日罚200元
  • 男子服用头孢后饮酒应酬致昏迷在家,救援人员破门施救后脱险
  • 戛纳参赛片《爱丁顿》评论两极,导演:在这个世道不奇怪
  • 吴双评《发展法学》|穷国致富的钥匙:制度,还是产业活动?
  • 中国旅游日|上天当个“显眼包”!体验低空经济的“飞”凡魅力