electron实现类似QQ来新消息时的闪烁与任务栏窗口提醒

简介: 公司项目有一款带即时聊天、群组功能的APP,因为要给客服人员使用,需要开发PC版本。之前使用C#开发过一个PC版本,但是C#的UI这一块支持的不太好,而且升级比较麻烦,我就牵头基于Electron去实现了一个PC版本。

公司项目有一款带即时聊天、群组功能的APP,因为要给客服人员使用,需要开发PC版本。之前使用C#开发过一个PC版本,但是C#的UI这一块支持的不太好,而且升级比较麻烦,我就牵头基于Electron去实现了一个PC版本。

 

遇到了客服那边提过来的需求,当有新消息过来的时候,如果聊天窗口最小化了,需要有提醒,系统托盘也要像QQ一样有新消息过来的提醒与闪烁。

 

查了一个资料,两个功能都实现了。

image

image image

 

先看任务栏的提醒样式如何实现

const path = require('path');
const electron = require('electron');
const {
    app,
    BrowserWindow,
    Menu,
    ipcMain,
    Tray
} = electron;

let mainWnd = null;

mainWnd = new BrowserWindow({
    minWidth: 1200,
    minHeight: 750,
    resizable: true,
    icon: 'icon.ico',
    skipTaskbar: false
});
// 开始或停止显示窗口来获得用户的关注
mainWnd.flashFrame(true);

 

闪烁的原理就是,用定时器更换托盘图标的icon,一张正常、一张透明,切换(像眨眼睛一样)。

let appIcon = new Tray(iconPath);

const contextMenu = Menu.buildFromTemplate([{
    label: '移除',
    click: function() {
        event.sender.send('tray-removed');
    }
}, {
    type: 'separator'
}, {
    label: 'Item1',
    type: 'radio'
}, {
    type: 'separator'
},{
    label: 'MenuItem2',
    type: 'checkbox',
    checked: true
}]);

// Make a change to the context menu
contextMenu.items[2].checked = false;

appIcon.setToolTip('在托盘中的 Electron 示例.');

appIcon.setContextMenu(contextMenu);


var count = 0;
setInterval(function() {
    if (count++ % 2 == 0) {
        appIcon.setImage(path.join(__dirname, '../img/tray/tray_icon_2.png'));
    } else {
        appIcon.setImage(path.join(__dirname, '../img/tray/tray_icon.png'));
    }
}, 400);

 

上面两个功能并不复杂,主要是对API方法的调用。

 

 

参考:

[1] https://github.com/electron/electron/tree/master/docs-translations/zh-CN/api

[2] https://github.com/electron/electron/blob/master/docs-translations/zh-CN/api/browser-window.md

[3] https://github.com/electron/electron/blob/master/docs-translations/zh-CN/api/tray.md

[4] https://github.com/demopark/electron-api-demos-Zh_CN

[5] https://electron.atom.io/docs/

[6] https://www.w3cschool.cn/electronmanual/

目录
相关文章
|
11月前
|
API C# 数据安全/隐私保护
ApeForms | C# WinForm 界面弹出消息通知栏 (仿Win10系统通知栏)
消息通知栏(Notification)在桌面开发中有非常重要的作用,它是一种全局的、强制的交互方式。它可以在活动窗体之外的区域向用户发出醒目的消息提示,允许用户在指引下通过简易的操作完成交互。ApeForms中提供的消息通知栏是在系统通知栏之外单独实现的一套通知功能,开发者可以自定义通知栏的内容、添加自定义的选项并设置动作回调、设置消失时间等。
564 0
ApeForms | C# WinForm 界面弹出消息通知栏 (仿Win10系统通知栏)
electron菜单或托盘点击如何打开新的窗口
electron菜单或托盘点击如何打开新的窗口
electron菜单或托盘点击如何打开新的窗口
|
移动开发 JavaScript Android开发
iOS12网页视频播放点击全屏按钮会导致闪退
iOS12网页视频播放点击全屏按钮会导致闪退
256 0
|
人工智能 安全 数据安全/隐私保护
微软 Windows 11 22H2 更新要来了!允许用户禁用任务栏通知区域所有应用图标
微软 Windows 11 22H2 更新要来了!允许用户禁用任务栏通知区域所有应用图标
193 0
微软 Windows 11 22H2 更新要来了!允许用户禁用任务栏通知区域所有应用图标
Qt实用技巧:将QWidget作为输入窗口,接收键盘消息、输入法并且控制输入法悬浮工具栏位置控制
Qt实用技巧:将QWidget作为输入窗口,接收键盘消息、输入法并且控制输入法悬浮工具栏位置控制
|
iOS开发
IOS - 苹果建议不要滑动关闭后台程序
IOS - 苹果建议不要滑动关闭后台程序
107 0
|
iOS开发
iOS倒计时按钮闪烁问题解决
iOS倒计时按钮闪烁问题解决
133 0
|
移动开发 数据可视化 前端开发
解决安卓收起键盘无法触发失焦事件的问题
解决安卓收起键盘无法触发失焦事件的问题
961 0
|
Windows
Win10锁屏壁纸位置在哪? 默认锁屏壁纸怎么提取?
  Win10默认系统下载的壁纸怎么下载?在哪里找出来呢?首先它是要设置为Windows聚焦才会自动从微软的服务器上去下载壁纸。这些都是随机下载的。每个人的都Win10 都有可能不一样。 Win10锁屏壁纸位置:   C:\Users\Bruce\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets   步骤:   1. 进入C盘,点击 Users 文件夹。
5927 0
关闭QQ弹出的腾讯网迷你版
关闭QQ弹出的腾讯网迷你版
300 0