通知
每个操作系统都有自己的机制来向用户显示通知。Electron的通知API是跨平台的,但对于每种进程类型都是不同的。
如果要在主进程或vice-versa中使用渲染器进程API,请考虑使用进程间通信.
下面是两个示例,展示了如何显示每个流程类型的通知。
在主进程中显示通知
使用Electron的通知模块.使用此模块创建的通知对象不会显示,除非显示()
实例方法。
主要工艺流程
常量 { 通知 } = 要求(“电子”)
常量 通知_标题 = '基本通知'
常量 通知_正文 = '来自主进程的通知'
新的 通知({
标题: 通知_标题,
身体: 通知_正文
}).显示()
这里有一个完整的例子,你可以用Electron Fiddle打开:
常量 {应用程序, 浏览器窗口, 通知 } = 要求('电子/主')
功能 创建窗口 () {
常量赢= 新的 浏览器窗口({
宽度: 800,
高度: 600
})
赢.loadFile(加载文件)('索引.html')
}
常量 通知_标题 = '基本通知'
常量 通知_正文 = '来自主进程的通知'
功能 showNotification(显示通知) () {
新的 通知({ 标题: 通知_标题, 身体: 通知_正文 }).显示()
}
应用程序.当准备就绪时().然后(创建窗口).然后(显示通知)
应用程序.在('窗口全部关闭', () => {
如果 (过程.平台 !== “达尔文”) {
应用程序.退出()
}
})
应用程序.在(“激活”, () => {
如果 (浏览器窗口.获取所有Windows().长度 === 0) {
创建窗口()
}
})
<!DOCTYPE(文件类型) html格式>
<html格式>
<头>
<元 字符集="UTF-8型">
<标题>你好,世界!</标题>
<元 http-equiv公司="内容安全策略" 内容="script-src“self”“unsafe-inline”;" />
</头>
<身体>
<小时1>你好,世界!</小时1>
<第页>启动此应用程序后,您应该会看到系统通知。</第页>
</身体>
</html格式>
在渲染器进程中显示通知
可以使用web通知API.
渲染器进程
常量 通知_标题 = '标题'
常量 通知_正文 =
'来自渲染器进程的通知。单击以登录到控制台。'
常量 点击消息 = '已单击通知'
新的 通知(通知_标题, { 身体: 通知_正文 }).onclick(单击) =
() => 慰问.日志(单击消息)
这里有一个完整的例子,你可以用Electron Fiddle打开:
- main.js(主要.js)
- 索引.html
- 渲染器.js
常量 {应用程序, 浏览器窗口 } = 要求('电子/主')
功能 创建窗口 () {
常量赢= 新的 浏览器窗口({
宽度: 800,
高度: 600
})
赢.loadFile(加载文件)('索引.html')
}
应用程序.当准备就绪时().然后(创建窗口)
应用程序.在('窗口全部关闭', () => {
如果 (过程.平台 !== “达尔文”) {
应用程序.退出()
}
})
应用程序.在(“激活”, () => {
如果 (浏览器窗口.获取所有Windows().长度 === 0) {
创建窗口()
}
})
<!DOCTYPE(文件类型) html格式>
<html格式>
<头>
<元 字符集="UTF-8型">
<标题>你好,世界!</标题>
<元 http-equiv公司="内容安全策略" 内容="script-src“self”“unsafe-inline”;" />
</头>
<身体>
<小时1>你好,世界!</小时1>
<第页>启动此应用程序后,您应该会看到系统通知。</第页>
<第页 身份证件="输出">单击它可在此界面中查看效果。</第页>
<脚本 型钢混凝土="渲染器.js"></脚本>
</身体>
</html格式>
常量 通知_标题 = '标题'
常量 通知_正文 = '来自渲染器进程的通知。单击以登录到控制台。'
常量 单击消息 = '已单击通知!'
新的 窗口.通知(通知_标题, { 身体: 通知正文 })
.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。