我们有一个电子应用程序,该应用程序将按照此处描述的结构从协议链接启动:https://github.com/oikonomopo/electron-deep-linking-mac-win(从Open app and pass parameters with deep linking using Electron (macOS)找到)
安装该应用程序后,我们可以从finder / launchpad中打开该应用程序,也可以使用myapp://someparams
从浏览器中调用该应用程序。
如果在关闭应用程序时调用myapp://someparams
,则应用程序将打开,并且主进程将按预期为Mac触发open-url
事件,我可以从URL中获取参数。如果应用程序最初是通过这种方法打开的,则重新调用myapp://someparams
将继续使应用程序集中精力并按预期触发open-url
。
但是,如果最初是从查找程序,启动板或命令行打开该应用的,则调用myapp://someparams
会引发second-instance
事件,而我一直无法找到一种方法获取用于调用应用程序的网址。 Windows运行正常,因为second-instance
事件的第二个参数包含协议作为参数,但mac情况并非如此。
所以问题是-有没有办法从Mac上的second-instance
事件中获取协议/ URL?还是有其他解决方法?
我确实从文档中看到了以下片段:https://electronjs.org/docs/api/app#apprequestsingleinstancelock
On macOS, the system enforces single instance automatically when users try to open a second instance of your app in Finder, and the open-file and open-url events will be emitted for that. However when users start your app in command line, the system's single instance mechanism will be bypassed, and you have to use this method to ensure single instance.
答案 0 :(得分:0)
mac: {
...
extendInfo: {
LSMultipleInstancesProhibited: true,
}
}