如何在 Electron App 上实现通知 API ?
我尝试检查Notification.permission并返回granted
但是当我尝试运行时:
new Notification("FOO", {body:"FOOOOOOOOOOOOOOOOOOOOOOOOO"});
没发生什么事。它甚至支持吗?
如何在 Electron App 上实现通知 API ?
我尝试检查Notification.permission并返回granted
但是当我尝试运行时:
new Notification("FOO", {body:"FOOOOOOOOOOOOOOOOOOOOOOOOO"});
没发生什么事。它甚至支持吗?
一个好的方法是使用node-notifier通知,因为该包具有跨平台通知支持
注意:由于这是一个 HTML5 API,它只在渲染器进程中可用。
例子 :
let myNotification = new Notification('Title', {
body: 'Lorem Ipsum Dolor Sit Amet'
})
myNotification.onclick = () => {
console.log('Notification clicked')
}
视窗
在 Windows 10 上,通知“正常工作”。
在 Windows 8.1 和 Windows 8 上,必须将带有应用程序用户模型 ID 的应用程序快捷方式安装到“开始”屏幕。但是请注意,它不需要固定到“开始”屏幕。
在 Windows 7 上,不支持通知。但是,您可以使用 Tray API 发送“气球通知”。
此外,通知正文的最大长度为 250 个字符,Windows 团队建议通知应保持为 200 个字符。
HTML5 NotificationAPI 仅在渲染器进程中可用。
如果要使用来自主进程的通知,则必须require使用Electron Notification API 。API 不同于标准/HTML5 版本。
const {Notification} = require('electron');
new Notification({
title: 'Headline',
body: 'Here write your message'
}).show();
通知 API 在 Windows 上不起作用,因为没有适用于所有 Windows 版本的通知 API(真的,Win10 是第一个桌面有记录 API 的版本,Win8.x 有它,但它只是 WinRT )
发布一个更新的答案,即 Electron 在他们的教程中有一个关于他们的通知和如何处理 Windows的部分
视窗
- 在 Windows 10 上,必须将带有应用程序用户模型 ID 的应用程序快捷方式安装到“开始”菜单。这在开发过程中可能是多余的,因此将 node_modules\electron\dist\electron.exe 添加到您的开始菜单也可以解决问题。导航到资源管理器中的文件,右键单击并“固定到开始菜单”。然后,您需要将行 app.setAppUserModelId(process.execPath) 添加到您的主进程以查看通知。
- 在 Windows 8.1 和 Windows 8 上,必须将带有应用程序用户模型 ID 的应用程序快捷方式安装到“开始”屏幕。但是请注意,它不需要固定到“开始”屏幕。
- 在 Windows 7 上,通知通过自定义实现工作,该实现在视觉上类似于较新系统上的本机实现。Electron 尝试自动执行围绕应用程序用户模型 ID 的工作。当 Electron 与安装更新框架 Squirrel 一起使用时,快捷方式会自动正确设置。此外,Electron 会检测到使用了 Squirrel,并会自动调用 app.setAppUserModelId() 并使用正确的值。在开发过程中,您可能需要自己调用 app.setAppUserModelId()。
此外,在 Windows 8 中,通知正文的最大长度为 250 个字符,Windows 团队建议通知应保持为 200 个字符。也就是说,Windows 10 中已经取消了该限制,Windows 团队要求开发人员保持合理。尝试向 API 发送大量文本(数千个字符)可能会导致不稳定。
对于窗口 7,您可以试试这个:https ://github.com/blainesch/electron-notifications - 它生成“桌面”通知作为单独的电子窗口。它看起来很光滑;我现在要实施了。我相信您需要使用类似https://github.com/electron/electron/blob/master/docs/api/ipc-main.md之类的东西在您的应用程序和负责的主要电子进程之间进行通信显示和管理通知,除非您的主要电子进程已经负责通知逻辑。
采用
const notification = new window.Notification(
'LO SIENTO OCURRIO EL ERROR:',
{
body: error,
}
);
notification.onclick = () => console.log('Clicked');
notification.onclose = () => console.log('Closed');