javascript - 需要从 http uri 方案启动 Electron App
问题描述
我正在开发一个简单的电子应用程序来显示来自服务器的图像。使用 app.setAsDefaultProtocolClient,当用户输入 uri 方案“iv://”时运行 .exe,并将参数传递给程序并使用。
此应用程序将从另一个程序调用,该程序会在按钮按下时打开生成的链接。目前,它针对的是托管我要替换的当前 Web 应用程序的服务器。它的 URL 看起来像这样:http://10.10.20.3?id=123456&name=example。
在大规模部署我的新应用程序之前,我们将在一些设备上对其进行测试。为此,我需要拥有它,以便所述生成的 URL 触发我的电子应用程序。换句话说,该 URL(http uri 方案和所有)必须打开我的桌面应用程序并将参数传递给它。我不允许更改当前程序方面的任何内容。
我假设将我的 Electron App 设置为默认 Web 浏览器可以有效地获得所需的结果,但我不知道该怎么做。有没有办法做到这一点?
解决方案
您要求的东西称为Deep Linking。至于电子,您可以查看 文档中的示例。
const {app, protocol} = require('electron')
const path = require('path')
app.on('ready', () => {
protocol.registerFileProtocol('atom', (request, callback) => {
const url = request.url.substr(7)
callback({path: path.normalize(`${__dirname}/${url}`)})
}, (error) => {
if (error) console.error('Failed to register protocol')
})
})
推荐阅读
- kotlin - 是否有将 Lambda 记录为 KDoc 中的函数参数的约定?
- javascript - redux-form:如何在 Promise 中抛出新的 SubmissionError?
- .net - 针对远程 Active Directory 验证用户名
- constraint-programming - clp(Z) 与 Kiselyov 关系算术
- css - 滚动时在粘性表格列的右侧出现阴影
- python - 是否可以使用 Tkinter 滚动条控制 matplotlib 图?
- scala - 在 Scala 中实现传统基于循环的任务的最佳方式
- android - Android:如何使用 signInWithCustomToken 对 Firestore 进行身份验证并监听/观察特定集合中的文档更改
- laravel - Facebook OAuth 此 URL 的域未包含在应用程序的域中
- javascript - 阻止带有 chrome 扩展的 url,然后显示自定义页面