从标准的Web浏览器启动Electron应用程序

12
点击 mailto: 链接将会打开我的默认邮件客户端。同样的,我希望通过 my-app: 来启动一个 Electron 应用程序。如果应用程序未安装,如何最优雅地回退到标准的 http 链接?
此外,我还想在启动 Electron 时传递一些额外的细节信息 my-app:foo/bar。当它被启动时,如何在 Electron 内部拦截这些内容?
我已阅读了一些我认为可能与此相关的文档:http://electron.atom.io/docs/v0.36.0/api/protocol/,但作为前端开发人员,我对整个过程的理解存在一些空白。非常感谢您的任何帮助!

你解决了吗?我在Linux和Chrome上没法解决。 - Shining Love Star
这里还没有被接受的答案,所以你找到这方面的工作示例了吗? - Srinath Ganesh
2个回答

11

自此问题首次发布以来,Electron已经有了很大的进展。

您不必深入了解Electron协议API,而是可以使用app.setAsDefaultProtocolClient(protocol[, path, args])接口及其兄弟接口app.removeAsDefaultProtocolClient(protocol[, path, args])app.isDefaultProtocolClient(protocol[, path, args])

这些使您能够注册一个协议标识符your-protocol://并接收参数:

整个链接(包括协议)将作为参数传递给您的应用程序。Electron API文档


1
你有这个工作的示例吗?我在Linux和Chrome上尝试了它,但它对我来说不起作用。 - Shining Love Star
你知道是否有一种方法可以添加两个协议吗?我的意思是,electron-app会同时打开your-protocol_0://和your-protocol_1://吗? - Artur Takoev
我实际上还没有尝试为应用程序注册多个协议,但是我也没有发现任何不应该工作的迹象。 - Jens Habegger

0

我不确定你想做的事情是否可能。这取决于你是想从实际浏览器窗口启动你的Electron应用程序,还是仅从另一个Electron实例启动。

我发现了这篇其他的Stack Overflow文章link,它展示了一种解决方法(虽然我担心它不会优雅地默认到任何东西),并解释了直接从浏览器启动程序可能存在的危险。

如果你想从另一个Electron应用程序启动你的Electron应用程序,你可能想要查看这个link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接