跳到主要内容

通知

每个操作系统都有自己的机制来向用户显示通知。Electron的通知API是跨平台的,但对于每种进程类型都是不同的。

如果要在主进程或vice-versa中使用渲染器进程API,请考虑使用进程间通信.

用法

下面是两个示例,展示了如何显示每个流程类型的通知。

在主进程中显示通知

使用Electron的通知模块.使用此模块创建的通知对象不会显示,除非显示()实例方法。

主要工艺流程
常量 { 通知 } = 要求(“电子”)

常量 通知_标题 = '基本通知'
常量 通知_正文 = '来自主进程的通知'

新的 通知({
标题: 通知_标题,
身体: 通知_正文
}).显示()

这里有一个完整的例子,你可以用Electron Fiddle打开:

常量 {应用程序, 浏览器窗口, 通知 } = 要求('电子/主')

功能 创建窗口 () {
常量= 新的 浏览器窗口({
宽度: 800,
高度: 600
})

.loadFile(加载文件)('索引.html')
}

常量 通知_标题 = '基本通知'
常量 通知_正文 = '来自主进程的通知'

功能 showNotification(显示通知) () {
新的 通知({ 标题: 通知_标题, 身体: 通知_正文 }).显示()
}

应用程序.当准备就绪时().然后(创建窗口).然后(显示通知)

应用程序.('窗口全部关闭', () => {
如果 (过程.平台 !== “达尔文”) {
应用程序.退出()
}
})

应用程序.(“激活”, () => {
如果 (浏览器窗口.获取所有Windows().长度 === 0) {
创建窗口()
}
})

在渲染器进程中显示通知

可以使用web通知API.

渲染器进程
常量 通知_标题 = '标题'
常量 通知_正文 =
'来自渲染器进程的通知。单击以登录到控制台。'
常量 点击消息 = '已单击通知'

新的 通知(通知_标题, { 身体: 通知_正文 }).onclick(单击) =
() => 慰问.日志(单击消息)

这里有一个完整的例子,你可以用Electron Fiddle打开:

常量 通知_标题 = '标题'
常量 通知_正文 = '来自渲染器进程的通知。单击以登录到控制台。'
常量 单击消息 = '已单击通知!'

新的 窗口.通知(通知_标题, { 身体: 通知正文 })
.onclick(单击) = () => { 文件.按Id获取元素('输出').内部文本 = 单击消息 }

平台注意事项

虽然跨操作系统的代码和用户体验相似,但都是细微的差异。

窗户

对于Windows上的通知,您的Electron应用程序需要有一个“开始”菜单快捷方式,带有应用程序用户模型ID和相应的ToastActivatorCLSID(Toast激活器CLSID).

Electron尝试自动化围绕AppUserModelID和ToastActivatorCLSID的工作。什么时候?电子与松鼠一起使用。Windows(例如,如果您使用的是electron-winstaller),快捷方式将自动正确设置.

在生产过程中,Electron还将检测到松鼠被使用,并自动呼叫app.setAppUserModelId()使用正确的值。在开发过程中,您可能会打电话app.setAppUserModelId()你自己。

开发中的通知

要在开发期间快速引导通知,请添加node_modules\electron\dist\electron.exe在“开始”菜单中技巧。在资源管理器中导航到该文件,右键单击并“固定到开始菜单”。然后,打电话app.setAppUserModelId(process.execPath)在主进程中查看通知。

使用高级通知

Windows还允许使用自定义模板、图像和其他灵活的高级通知元素。

要从主进程发送这些通知,可以使用userland模块电子窗口通知,它使用本机节点插件发送ToastNotification(演讲通知)平铺通知物体。

当包括按钮的通知与一起工作时电子窗口通知,处理回复需要使用电子视窗交互通知,这有助于注册所需的COM组件并调用输入用户数据的Electron应用程序。

查询通知状态

要检测是否允许您发送通知,请使用userland模块窗口-通知-状态.

此模块允许您提前确定Windows是否会自动抛出通知离开。

macOS操作系统

在macOS上通知很简单,但您应该知道苹果关于通知的人机界面指南.

请注意,通知的大小限制为256字节,并将被截断如果你超过了这个限制。

查询通知状态

要检测是否允许您发送通知,请使用userland模块macos通知状态.

此模块允许您提前检测是否显示通知。

Linux操作系统

发送通知时使用libnotify公司,可以在任何遵循的桌面环境桌面通知规范,包括肉桂、启蒙、团结、GNOME和KDE。