Linux版钉钉封装

首先交出项目在全球最大男性交友网站的地址https://github.com/nashaofu/dingtalk

声明

本作品只是自己开发的练习作品,没有用于任何商业目的,开源出来也就为了方便他人,如有问题请在Github上联系我。也请各位不要把这个版本的钉钉用于其他目的。

项目效果展示

  1. 二维码登录页面
    Linux版钉钉封装_第1张图片
    二维码登录页面
  2. 账号密码登录页面
    Linux版钉钉封装_第2张图片
    账号密码登录页面
  3. 登录后页面展示
    登录后页面展示
  4. 钉钉邮箱界面
    Linux版钉钉封装_第3张图片
    钉钉邮箱界面
  5. 截图效果
    截图效果预览

我为什么要做这个版本

其实我想应该有很多人都想问,为什么钉钉团队不推出Linux版本的钉钉,尤其是钉钉采用的技术是可以跨平台的。
开发Linux版的钉钉是在我使用Linux后开始萌发的,由于公司是使用钉钉办公,所以有时候传文件什么的非常不方便。最开始是网页版的钉钉,后来在chrome里面找到了一个钉钉的应用(应用页面里包裹了一个webview标签,标签URL链接到钉钉网页版)。但说句实话,这两个使用起来都很蛋疼。首先,页面主区域不能最大化;其次是总要开一个窗口,感觉用起来总是很别扭,有时候不小心就会把窗口给关掉了。

项目实现功能

  1. 首先解决了上面说到的问题
  2. 支持新消息提示(显示出通知和未读消息徽章)
  3. 支持版本更新检测
  4. 任务栏显示应用图标,并支持快速打开和右键菜单
  5. 添加支持对文本的邮件菜单复制与粘贴
  6. 添加了热更新功能支持(修复一些小BUG用,否者每次都只能狗重新下载安装才能解决BUG)
  7. 支持屏幕截图,并且支持多显示器截图。截图快捷键为ctrl+alt+a

项目中遇到的问题

  1. 对于外部文件引入时的安全问题
    1. 在界面右上角的几个按钮使用到了iconfont,但在引入iconfont文件时出现了问题,页面采用的时https协议,所以不允许http或者其他的协议引入资源(base64也是不可以的),最后采用直接从iconfont上引入的方式解决。
    2. 在做热更新和版本更新检测的时候,本来是打算吧这部分代码写到渲染进程的,但后来发现页面中指定了跨域请求的范围,即只有声明的域才能够访问,如下图所示
      Linux版钉钉封装_第4张图片
      跨域.PNG

      最后的解决方案是把,这些请求都放到主进程,这样就避免了这个问题。

  2. 消息提示功能,对于这个问题,我也是参考了electron版本的微信之后干的,采用很暴力的办法,就是每2s扫描一下消息列表dom元素,获取dom上的徽章数值之和,然后把这个设置到徽章上。其次是系统提示信息的展示,对于这个electron文档中没有提及到,但后来查到直接使用Notification就行了。

你可能感兴趣的:(Linux版钉钉封装)