我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文中,苏南大叔将要说明,如何在electron中实现伪协议。通过本文的学习,您就可以在网页里面,拉起你本地的electron程序了。当然,还可以根据伪协议传递的不同参数,而做出不同的具体electron行为,本文中的功能代码可以说是非常实用了,建议大家多多练习。

苏南大叔:electron如何注册伪协议?伪协议的检测及删除 - electron-fake-protocal
electron如何注册伪协议?伪协议的检测及删除(图2-1)

本文测试环境:win10electron@5.0.1。本文内容,支持macwindows,在苏南大叔的测试中,暂时不支持centos。支持macwindows的函数中,部分参数仅仅支持windows

设置伪协议

开启伪协议的代码非常简单,以注册一个伪协议sunan为例,就如下几行就可以了。

主进程main.js

const {app} = require('electron')
app.setAsDefaultProtocolClient("sunan");

函数的原型是:

app.setAsDefaultProtocolClient(protocol[, path, args])

所以,大家可以看到:

所以,上面的函数等同于如下变形:

app.setAsDefaultProtocolClient("sunan",process.execPath);
app.setAsDefaultProtocolClient("sunan",process.execPath,[]);

如果您的目的就是调用起您的electron,而不需要进一步区分处理的话,这里的代码就足够了。另外,如果第一次成功设置了伪协议,第二次再次设置伪协议的时候,并不会重复操作。这一点上是比较智能的。

大多数情况(高版本+生产环境)下来说,args设置为[]即可。但是对于低版本或者非生产环境来说,这个args是有很多学问的,设置为[]会出一些问题。目前,这个事情暂时不在本文讨论范围内。

删除伪协议

此方法检查当前程序是否为协议(也称为URI scheme)的默认处理程序。 如果是,它会删除应用程序作为默认处理程序。

app.removeAsDefaultProtocolClient(protocol[, path, args])

根据官方说明,此removeAsDefaultProtocolClient函数仅支持mac系统和win系统。

检测伪协议

此方法检查当前可执行文件是否是协议(也称为URI方案) 的默认处理程序。如果是, 它将返回true。否则, 它将返回false。

app.isDefaultProtocolClient(protocol[, path, args])

范例代码

下面的代码是上述几个函数的联合测试代码,操作的伪协议叫做sunan

const {app} = require('electron')
app.setAsDefaultProtocolClient("sunan");
const status_1=app.isDefaultProtocolClient("sunan");
console.log("protocol check:",status_1);
app.removeAsDefaultProtocolClient("sunan");
const status_2=app.isDefaultProtocolClient("sunan");
console.log(" protocol check2:",status_2);

苏南大叔:electron如何注册伪协议?伪协议的检测及删除 - protocol-demo-code
electron如何注册伪协议?伪协议的检测及删除(图2-2)

注意事项

win系统中,伪协议的实现,是通过写注册表的方式来实现的。注册表的写入操作,共有两次写入。可能会被360之类的软件拦截掉,所以,请注意允许相关的注册表操作才可以。

详细的原理描述,可以参见下面的链接:

如果您需要根据不同的参数,进一步区分electron的后续行为的话,您还需要对传递过来的参数做进一步的处理。

结束语

本文的测试环境是win10,在其他的操作系统中,实际上还是有特殊情况的。所以,本文就做个开山篇,对于其他操作系统的特殊情况,苏南大叔会做后续补充说明。mac下可以注册协议成功,但是调试模式下并不符合预期。centos下协议直接注册失败...

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   electron