使用 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').shellconst 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').dialogapp.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 支持, 谢谢.

使用 Electron 从协议处理器启动应用程序相关推荐

  1. Android从启动到程序运行发生的事情

    本文转载自:杂谈--Android从启动到程序运行发生的事情 前言 好久没有写博客了,瞬间感觉好多学了的东西不进行一个自我的总结与消化总归变不成自己的.通过博客可能还可以找到一些当初在学习的时候没有想 ...

  2. 无法启动此程序因为计算机中丢失msvcr110,无法启动此程序因为计算机中丢失msvcr110,教您无法运行程序提示计算机中丢失...

    用户在一次运行某程序时,运到"无法启动此程序,因为计算机中丢失msvcr.dll.尝试重新安装该程序以解决此问题."的提示,当时很无语,因为系统是刚刚安装好的,怎么处理呢?下面,小 ...

  3. 网络编程应用:基于UDP协议【实现聊天程序】--练习

    要求: 使用UDP协议实现一个聊天程序 代码: 发送端: package UDP聊天程序;import java.io.IOException; import java.net.DatagramPac ...

  4. 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll的解决方法

    可能有的朋友在运行某软件时,会出现了"无法启动此程序,因为计算机中丢失 MSVCR110.dll.尝试重新安装该程序以解决此问题."的提示,遇到这样的情况该怎么办呢?不用着急,下面 ...

  5. java 协议处理器_协议处理器urlstreamhandler及contenthandler

    先看段打开网页的代码:URL url=new URL("http://souljava.blog.163.com/"); URLConnection connection=url. ...

  6. 从浏览器启动客户端程序的方法

    从浏览器页面上,启动用户本地的客户端程序的方法,常见的有两种. 一.Asynchronous Pluggable Protocols协议方式 MSDN或网络上搜索,即可找到相应的方法. 从浏览器启动客 ...

  7. sparc处理器开发工具_SPARC处理器启动代码的分析与编程

    SPARC 处理器启动代码的分析与编程 吴景红 ; 李朋 ; 刘柳柳 [期刊名称] <机电产品开发与创新> [年 ( 卷 ), 期] 2008(021)006 [摘要] 优秀的启动代码的编 ...

  8. 无法启动此程序因为计算机丢失msvcr110.dll,计算机中丢失msvcr110.dll怎么办

    我们在打开电脑程序的时候,系统提示无法启动此程序,因为计算机中丢失MSVCR110.dll,尝试重新安装该程序以解决此问题.这是什么情况呢?因为现在所有的5.5环境都是基于vc11的编译脚本下生成的, ...

  9. 韩:已撤销慰安妇财团法人资格 将启动清算程序

    中新网1月29日电 据韩国国际广播电台(KBS)报道,当地时间29日,韩国女性家族部表示,该部长官21日行使职权,撤销了根据<韩日慰安妇问题协议>设立的"和解与治愈基金会&quo ...

最新文章

  1. 6月Python热文Top10,精选自1000篇文章
  2. PG 9.4 行冻结信息的测试
  3. linux 杀毒软件 clamav安装使用
  4. 19道Python基础列表元祖的练习题
  5. R语言quantstrat包
  6. 【python】画一个爱心
  7. 第二十四期:管理 | 成功领导远程IT团队的7个技巧
  8. Freemarker静态化页面的使用
  9. panel中html怎么写,在Panel上绘制Html表?
  10. Java修饰符的访问权限
  11. 计算最大值和最小值(分治法)
  12. 混合使用UITabBarController和UINavigationController
  13. 一道有关switch-case题目
  14. js对象写入键值对_js对象添加键值对
  15. 投影仪幕布增益_别再说幕布是花瓶 投影幕布的作用原来这么大
  16. php 拼团_详解在微信公众平台里实现微信拼团功能的步骤
  17. 机器学习 数据挖掘 统计学 深度学习
  18. 一文详解 OpenGL ES 纹理颜色混合
  19. 市场调研-邻苯二甲酰亚胺钾市场现状及未来发展趋势
  20. Oracle应用之修改表字段类型

热门文章

  1. apollo芯片_ADAS/AD主控芯片研究:集成趋势下的短板与变革
  2. 【Java并发编程】—–“J.U.C”:ConcurrentLinkedQueue
  3. MySIAM与Innodb引擎
  4. MySQL 存储过程 经常使用语法
  5. 深入入门正则表达式(java) - 匹配原理 - 1 - 引擎分类与普适原则
  6. matlab未定义函数lp,matlab未定义函数或变量(附上源代码)
  7. python程序开发入门_Python开发入门14天集训营-第一章
  8. 大学开设python课程吗_在大学为什么你一定要学会Python?
  9. nacos 集群_Nacos 常见问题及解决方法
  10. 数据算法-K Means