使用 Electron 从协议处理器启动应用程序
使用 Electron 从协议处理器启动应用程序
此系列文章的应用示例已发布于 GitHub: electron-api-demos-Zh_CN. 可以 Clone 或下载后运行查看. 欢迎 Star .
app
模块提供了处理协议的方法.
这些方法允许您设置协议和取消协议, 来让你的应用成为默认的应用程序. 类似于当浏览器请求您查看网页时的默认值.
在浏览器中查看 完整 app API 文档.
从其他应用中的 URL 启动应用
支持: Win, macOS | 进程: 主进程
您可以将应用设置为针对特定协议打开的默认应用. 例如, 在这个示例中我们将此应用程序设置为 electron-api-demos://
的默认值. 上面的示例按钮将在默认浏览器中启动一个带有链接的页面. 点击那个链接,它将重新启动此应用程序.
<a href="electron-api-demos://open"><h3>electron-api-demos://open</h3></a>
打包
这个功能只能在 macOS 上使用, 而且需要将应用打包. 如果你以开发模式从命令行启动, 它将无法使用.
当您打包应用程序时, 您需要确保应用程序的 macOS plist
已更新为包含新的协议处理器.
如果您使用 electron-packager
, 那么您可以添加 --extend-info
标记,并在其中包含您创建的 plist
.
当前程序用例如下:
渲染器进程
const shell = require('electron').shell const path = require('path') const protocolHandlerBtn = document.getElementById('protocol-handler') protocolHandlerBtn.addEventListener('click', function () { const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked') const pagePath = path.join('file://', pageDirectory, '../../sections/system/protocol-link.html') shell.openExternal(pagePath) })
主进程
const app = require('electron').app const dialog = require('electron').dialog app.setAsDefaultProtocolClient('electron-api-demos') app.on('open-url', function (event, url) { dialog.showErrorBox('欢迎回来', `你来自: ${url}`) })
主进程
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>electron-api-demos</string> </array> <key>CFBundleURLName</key> <string>Electron API Demos Protocol</string> </dict> </array> <key>ElectronTeamID</key> <string>VEKTX9H2N7</string> </dict> </plist>
如果这边文章对您有帮助, 感谢 下方点赞 或 Star GitHub: electron-api-demos-Zh_CN 支持, 谢谢.
相关推荐
游走的豚鼠君 2020-11-10
sanallen 2020-07-04
electronvolt 2020-07-04
sanallen 2020-06-14
moyigg 2020-06-09
疯狂老司机 2020-06-07
zhujuyu 2020-06-06
moyigg 2020-06-01
zhujuyu 2020-05-30
viewerlin 2020-05-29
zhujuyu 2020-05-28
yanchuncheng 2020-05-12
Trustport 2020-05-06
chenyijun 2020-05-05
electronvolt 2020-05-04
游走的豚鼠君 2020-05-01
electronvolt 2020-04-21
游走的豚鼠君 2020-04-18