You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过公共URL打开或唤起已运行的Electron应用、浏览器标签页/PWA应用

实现思路

1. Electron 客户端适配

  • 第一步注册自定义URL协议
    打包阶段通过配置关联自定义协议(比如yourapp://),Windows端修改注册表关联协议,Mac端在Info.plist中添加CFBundleURLTypes配置,Linux端在.desktop文件中配置MimeType,实现点击自定义协议链接直接唤起客户端。如果需要用公共HTTPS URL唤起,可额外配置*通用链接(iOS/Mac)或应用链接(Windows/Android)*关联你的公共域名。
  • 单实例控制与唤起逻辑
    主进程启动时首先调用app.requestSingleInstanceLock(),如果返回false直接调用app.quit()退出,避免多实例运行。
    监听second-instance事件(Windows/Linux下新实例启动触发)和open-url事件(Mac下协议唤起触发),在回调中解析传入的URL提取查询参数,同时调用现有主窗口的restore()、focus()方法将窗口切到前台,再通过IPC把查询参数传给渲染进程处理业务逻辑。

2. Web端/PWA适配

  • 公共URL前置检测逻辑
    用户访问你的带参公共URL时,先进入统一的检测中转页:
    1. 优先尝试唤起Electron客户端:跳转自定义协议链接(拼接原URL的查询参数),同时监听页面visibilitychange事件,若2秒内页面未进入隐藏状态,判定客户端未安装/未唤起,进入Web端检测逻辑。
    2. 检测已打开的Web标签页/PWA:使用同域生效的Broadcast Channel API,发送check-running广播消息,等待100ms如果收到已打开页面的回应,直接通知对应页面调用window.focus()聚焦,同时把查询参数通过广播传给对应页面处理,当前中转页直接关闭。
    3. 无已运行页面时,中转页正常跳转到Web应用页面,将查询参数带到应用页处理。
  • 应用页监听逻辑
    Web应用/PWA加载完成后,监听Broadcast Channel的消息:收到check-running消息立刻回传回应,收到参数推送消息则走对应的业务处理逻辑。
    PWA额外在manifest.json中配置"handle_links": "preferred",实现安装后相关链接直接唤起PWA而非新开浏览器标签页。

3. 通用参数处理

两端统一使用new URLSearchParams()接口解析URL查询参数,复用同一套业务处理逻辑,降低维护成本。


内容的提问来源于stack exchange,提问作者Arthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:06:03