我正在开发一个需要自定义协议的 Electron 应用程序。我希望能够使用 Electron cli 在开发环境中对此进行测试。我目前正在通过以下方式注册协议:
const protocolRegisterSuccess = app.setAsDefaultProtocolClient('my-protocol');
Run Code Online (Sandbox Code Playgroud)
然后我启动我的开发电子应用程序并在 Chrome 中electron main.bundle.js打开。my-protocol://test我希望它打开我当前正在运行的开发应用程序,或者至少启动另一个应用程序,但是它会启动一个新的电子应用程序,显示默认的电子屏幕(“要运行本地应用程序,请执行此命令...”)。
我正在 Mac 上进行开发,当我查看时,~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist我可以看到协议已注册并且应用程序 ID 设置为com.github.electron. 看起来这是由电子 CLI 启动的电子可执行文件的应用程序 ID,用于在本地运行我的应用程序(存在于./node_modules/electron/dist/Electron.app/Contents/MacOS/Electron),我相信这就是协议不起作用的原因。
有什么办法可以让协议在本地运行吗?我可以更新应用程序标识符(通过某些配置参数或重建可执行文件)吗?是否可以指定传递给在 Mac 上启动的可执行文件的参数?我不需要行为与完全打包的应用程序完全相同,但我希望能够在开发中测试基本的自定义协议。
谢谢你!
小智 0
我找到了2个解决方案:
electron-deeplink这个,我没有尝试过,但它看起来很有希望,唯一的缺点是 ii 正在注入.mm文件,我总是对此很小心。而且它仅适用于 mac。patch-package,所以你需要进去/node_modules/electron/dist/Electron.app/Contents/Info.plist修改<string>com.github.Electron</string>成你想要的名称。然后,删除电子构建文件和节点模块,yarn瞧,您应该可以开始了。