# 桌面应用
「桌面应用」是网站应用的扩展功能,开发者可在已审核通过的网站应用基础上开通桌面应用能力,使桌面端应用(Windows/macOS)获得微信内网页拉起桌面应用的开放能力。
本文介绍桌面应用的开通流程、开发信息配置、开放能力申请、绑定关系管理,以及微信内网页拉起桌面应用的开发接入说明。
操作路径
- 前往「微信开发者平台 - 我的业务 - 网站应用 - 基础信息 - 桌面应用」,即可开通和管理桌面应用
# 1、开通桌面应用
# 1.1 前置条件
- 网站应用必须已审核通过,才能开通桌面应用功能
- 如网站应用尚未创建或未通过审核,需先完成网站应用的创建和审核流程
# 1.2 申请表单
点击「开通」按钮后,进入桌面应用信息填写页面,需提供以下信息:
| 字段 | 是否必填 | 说明 |
|---|---|---|
| 桌面应用名称 | 是 | 2-40 字节,仅允许中文、字母、数字,空格只能出现在字母之间且不超过 1 个;半年内仅可修改 2 次 |
| 英文名称 | 否 | 仅允许字母和数字,2-40 字节 |
| 桌面应用简介 | 是 | 8-80 字节 |
| 英文简介 | 否 | 8-80 字节 |
| 应用官网 | 是 | 必须以 http:// 或 https:// 开头;需已完成 ICP 备案,备案主体需与开放平台主体一致或有授权关系 |
| 桌面应用水印图片 | 是 | 28×28 像素,PNG 格式,不超过 200KB |
| 桌面应用高清图片 | 是 | 108×108 像素,PNG 格式,不超过 200KB |
| 申请/修改应用说明 | 否 | 最多 200 字节,可补充审核所需的额外说明 |
注意:可能需要额外提交《营业执照》或《组织代码证》以及补充材料(最多 5 张)。
# 1.3 提交审核
填写完成后点击「提交」,预计 1-7 个工作日内完成审核。若应用中包含较复杂逻辑或其他情况,审核时间会延长。
审核状态说明
| 状态 | 说明 |
|---|---|
| 审核中 | 已提交申请,等待审核结果。审核中不可编辑基础信息 |
| 审核通过 | 已通过审核,可正常使用桌面应用相关能力 |
| 审核不通过 | 未通过审核,可根据驳回原因修改后重新提交 |
# 2、开发信息配置
桌面应用开通后,需配置对应平台的开发信息,支持 Windows 和 macOS 两个平台。
# 2.1 macOS 配置
| 字段 | 是否必填 | 说明 |
|---|---|---|
| Scheme | 是 | 用于微信回调拉起桌面应用的 URL Scheme(在 Info.plist 中通过 CFBundleURLSchemes 注册),最长 256 字节 |
| Bundle ID | 是 | macOS 应用的 Bundle Identifier,例如 com.tencent.example,最长 256 字节 |
# 2.2 Windows 配置
| 字段 | 是否必填 | 说明 |
|---|---|---|
| Scheme | 是 | 用于微信回调拉起桌面应用的 URL Scheme,例如 weixinapp://,最长 256 字节 |
| 签名主体 | 是 | 主签名证书的 Subject(取自可执行文件代码签名证书),用于身份校验,最长 256 字节 |
| 证书签名 | 是 | 主签名证书的指纹(Thumbprint),仅允许小写字母和数字,最长 256 字节 |
| 备用签名主体 | 否 | 备用签名证书 Subject,用于证书更换的过渡期,最长 256 字节 |
| 备用证书签名 | 否 | 备用签名证书指纹,仅允许小写字母和数字,与备用签名主体配套使用,最长 256 字节 |
- 补充说明:备用签名主要用于证书过期更新的过渡期。当线上 APP 仍使用主签名证书运行时,开发者可在后台填写新的备用签名主体/备用证书签名,使新旧证书同时生效,待全部用户升级到新版本后再用新证书替换主字段。命中主签名或备用签名任一组都视为合法。
操作路径
- 前往「微信开发者平台 - 我的业务 - 网站应用 - 开发信息 - 桌面应用开发信息」,点击「操作」下拉菜单即可修改 Windows 或 macOS 的开发信息
# 3、开放能力
桌面应用开通并审核通过后,可使用以下开放能力:
| 能力 | 说明 | 前置条件 |
|---|---|---|
| 微信内网页拉起桌面应用 | 用户在微信 PC 端内置浏览器访问网页时可拉起桌面应用 | 开放平台已认证 + 桌面应用已开通且审核通过 + 已绑定已认证服务号 |
如需使用「微信内网页拉起桌面应用」能力,需同时满足以下条件:
1)开放平台账号已完成认证
2)桌面应用已开通
3)桌面应用已审核通过
4)已绑定已认证的服务号
满足以上全部条件后,可获得此能力。
# 4、绑定关系
# 4.1 绑定服务号
绑定服务号是使用「微信内网页拉起桌面应用」能力的前置条件。绑定后,可在该服务号的 JS 安全域名下的网页中拉起桌面应用。
绑定条件
1)服务号需已完成企业认证
2)服务号需已配置 JS 接口安全域名
3)服务号需与当前桌面应用绑定于同一开放平台账号下
绑定操作
- 前往「微信开发者平台 - 我的业务 - 网站应用 - 绑定关系 - 服务号」,填写服务号 AppID 和 JS 安全域名后提交
- 绑定时需服务号管理员扫码授权确认
解绑操作
- 在已绑定的服务号列表中点击「删除」,确认后需管理员扫码确认方可完成解绑
# 5、微信内网页拉起桌面应用 - 开发接入
适用范围:微信 PC 端(Windows/macOS)内嵌浏览器场景下,H5 网页通过开放标签拉起本机已安装的桌面端 APP。
本节参考移动端 《微信内网页跳转 APP 功能》 与 《wx-open-launch-app 开放标签》 编写,仅描述 PC 端在能力实现、配置项、安全校验等方面与移动端的差异点。未在本文中特别说明的内容(开通条件、前端 JS-SDK 注入、
wx-open-launch-app标签写法、ready / launch / error事件、错误码语义等),均与移动端文档保持一致,请直接参考上述两份文档。
# 5.1 功能介绍
在 PC 端微信内置浏览器中访问网页时,部分场景下用户需要跳转到对应的桌面客户端使用完整服务。微信 PC 端复用移动端 wx-open-launch-app 开放标签的接入方式,提供「H5 拉起 PC APP」能力。
PC 端通过**本机自定义协议(URL Scheme)**唤起桌面 APP,因此对应用的「协议头注册」与「可执行文件签名」提出了额外要求。为防止恶意应用抢注同名协议头冒充目标 APP,PC 端会基于开发者在开放平台后台填写的签名信息(Windows 为代码签名证书的 Subject 与 Thumbprint,macOS 为 Bundle ID)做合法性校验,校验失败将无法拉起。
# 5.2 关联配置说明
PC 端复用与移动端相同的「服务号 — 域名 — 移动应用」绑定关系,只在此基础上增加了对桌面端拉起信息的额外配置。本节只描述 PC 端独有的配置项与校验逻辑,其余配置流程(认证条件、关联设置入口、域名绑定规则等)请参考移动端文档。
桌面端 APP 信息配置
开发者需在微信开放平台后台对应网站应用的管理页面中,补充填写「桌面端拉起信息」。所有字段均通过开放平台网页表单填写即可,无需额外接口调用。具体配置项详见上方第 2 节「开发信息配置」。
关联关系校验
每次拉起请求都会校验下列四组一致性,任何一项不匹配都会拒绝拉起:
1)发起页面所属的服务号,与开放平台关联设置中填写的服务号一致
2)网页 URL 的 host,与服务号「JS 接口安全域名」以及关联设置中绑定的域名完全一致
3)wx-open-launch-app 标签上的 appid,与关联设置中绑定的网站应用 AppID 一致
4)本机即将被拉起的目标 APP 的签名信息,与开放平台后台为该网站应用登记的桌面端配置一致:
- Windows:要求可执行文件的代码签名 Subject 与 Thumbprint 命中后台填写的「签名主体/证书签名」或「备用签名主体/备用证书签名」任一组
- macOS:要求 APP 的 Bundle ID 与后台填写的 Bundle ID 完全一致
其本质是确保「开放平台登记的 APP 身份」与「本机被拉起的 APP 身份」吻合,防止恶意应用抢注同名 Scheme 冒充目标 APP。
# 5.3 前端接入与拉起 URL 形态
前端接入方式(引入 jweixin.js、wx.config 申请 openTagList: ['wx-open-launch-app']、wx-open-launch-app 标签写法及 appid/extinfo 属性、ready/launch/error 事件监听等)与移动端完全一致,开发者无需为 PC 端编写额外代码,详见移动端文档。
PC 端最终通过开放平台后台配置的 Scheme 拉起本机程序,extinfo 会作为 query 参数附带过去,例如:
weixinapp://launch?appid=wxabcdefg1234567&extinfo=xxx
具体 query 字段以微信客户端最终实现为准,APP 侧需做好缺省字段兼容。
拉起结果说明
拉起请求发出后,可通过 err_msg 字段判断执行结果,目前支持以下返回值:
| err_msg | 说明 |
|---|---|
ok | 拉起成功 |
check fail | 校验失败 |
extinfo invalid | extinfo 参数无效 |
unknown error | 未知错误 |
server error | 服务端报错,resp 直接返回错误 |
server error code:xxx | 服务端报错,resp 含有效响应,后台返回具体业务错误码(xxx 为具体错误码) |
服务端业务错误码说明
当 err_msg 为 server error code:xxx 时,xxx 为后台返回的业务错误码,目前支持以下取值:
| 错误码 | 说明 |
|---|---|
10001 | 桌面应用未绑定服务号 |
10002 | H5 服务号与桌面应用绑定的服务号不匹配 |
10003 | H5 域名与服务号域名不匹配 |
补充说明 如果发现 wx config 之后没有渲染出开放标签按钮,则请检查是否已经满足全部的条件(可查看下方注意事项的内容)
# 5.4 参考文档
# 6、注意事项
1)桌面应用是网站应用的扩展功能,需先有审核通过的网站应用才能开通
2)桌面应用名称半年内仅可修改 2 次,请谨慎填写
3)审核中的桌面应用不可编辑基础信息,需等待审核结果后再操作
4)开发信息(Windows/macOS 配置)修改后即时生效,无需审核
5)如需使用「微信内网页拉起桌面应用」能力,需确保已绑定已认证的服务号,并完成 JS 安全域名配置
6)PC 端拉起桌面应用会进行签名校验,请确保本机安装的 APP 签名信息与开放平台后台配置一致,否则将无法拉起