首页 > 解决方案 > 需要从 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 浏览器可以有效地获得所需的结果,但我不知道该怎么做。有没有办法做到这一点?

标签: javascripthttpelectron

解决方案


您要求的东西称为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')
    })
  })

推荐阅读