Electron 如何从网站启动我的电子应用程序
我们有一个电子加密应用程序,用于签署交易(以及其他事项) 我们希望其他网站能够有一个按钮,打开电子应用程序,预先填写一些参数(交易信息) 流量为:Electron 如何从网站启动我的电子应用程序,electron,electron-builder,Electron,Electron Builder,我们有一个电子加密应用程序,用于签署交易(以及其他事项) 我们希望其他网站能够有一个按钮,打开电子应用程序,预先填写一些参数(交易信息) 流量为: 用户在some-crypto-site.com上单击“进行交易” electron应用程序以预填充参数打开 用户在electron应用程序中单击“签署交易” electron应用程序在幕后做一些事情 electron应用程序关闭并向some-crypto-site.com发送消息 这可以在运行时完成,也可以在安装时完成 我尝试的(linux、chro
app.setAsDefaultProtocolClient("my-app")
但是在我把我的-app://foo?bar=baz
在chrome浏览器中,我看到以下弹出窗口,按open xdg不做任何操作(除了关闭弹出窗口)
我调查
由于这可能与我在工作中所做的有关,我决定试一试。 我只在OSX上测试过 我查看了的文档,上面说: 注意:在macOS上,您只能注册已添加到应用程序info.plist的协议,该协议在运行时无法修改。但是,您可以在构建期间使用简单的文本编辑器或脚本更改文件。有关详细信息,请参阅苹果的文档 使用
electron builder
打包应用程序时,可以定义这些协议。请参见构建:
{
“名称”:“foobar”,
“版本”:“1.0.0”,
“main”:“main.js”,
“脚本”:{
“开始”:“电子”,
“dist”:“electron builder”
},
“依赖性”:{
“电子”:“^3.0.7”,
“electron builder”:“^20.38.2”
},
“依赖项”:{},
“构建”:{
“appId”:“foobar.id”,
“mac”:{
“类别”:“foo.bar.category”
},
“议定书”:{
“名称”:“foobar协议”,
“计划”:[
“foobar”
]
}
}
}
在主线程中:
const{app,BrowserWindow}=require('electron');
让主窗口打开;
函数createWindow(){
mainWindow=新浏览器窗口({宽度:800,高度:600})
mainWindow.loadFile('index.html');
}
应用程序打开(“就绪”,创建窗口);
var-link;
//这将捕获对链接的点击,例如
app.on('open-url',函数(事件、数据){
event.preventDefault();
链接=数据;
});
app.setAsDefaultProtocolClient('foobar');
//导出,以便可以从渲染器线程访问它
module.exports.getLink=()=>link;
在渲染器线程中:
注意使用API访问主线程中导出的getLink
函数
收到了这个数据
const{getLink}=require('electron').remote.require('./main.js');
document.querySelector('#data')。value=getLink();
示例
这还允许您从命令行启动:
open "foobar://xyz=1"
您如何回复原来电人?
我想,当您启动应用程序时,您可以包括呼叫者url:
当你的电子应用程序处理完数据后,它会简单地ping回那个url
学分
我的大部分调查结果基于:
- 由此
- 以及来自@oikonomopo的
调用app.setAsDefaultProtocolClient(“我的应用”)
,然后用my打开它-app://foo?bar=baz
导致调用“your/path/electron.exe my”-app://foo?bar=baz" . delectron.exe将其第一个参数作为应用程序路径,因此它不起作用。@Hiitger感谢您的评论,我不明白您说的是什么。你能澄清一下吗?你好,我不确定你是否真的可以从chrome上打开一个Electron应用程序,但如果它已经打开了,你可以发送东西给它。可以吗?太好了,我会尽快调查的!这对您的开发有用吗,或者您必须制作一个安装程序并安装它才能在您的本地机器上工作?再次感谢!实际上我还没试过。这确实是针对一个打包和安装的应用程序进行的测试。在linux上,我尝试了一个压缩打包的应用程序,但它不起作用。目前,我们没有使用linux安装程序,因此无法对其进行测试。如果我们让它工作,将更新。请注意,openurl
事件仅适用于mac。Windows和Linux将需要使用process.argv
的argv参数来循环遍历这些参数,并检查其中是否有一个是用于启动应用程序的url。