Skip to content

记一次微信公众号 H5 界面按钮点击无法弹出微信小程序问题

背景

项目初期,我们使用的是 微信公众号服务号,通过微信开放标签 wx-open-launch-weapp 在 H5 页面中实现了跳转小程序的功能。

wx-open-launch-weapp 开放标签

wx-open-launch-weapp 是微信提供的开放标签,用于在网页中提供一个可跳转指定小程序的按钮。使用此标签后,用户需要在网页内点击标签按钮方可跳转小程序。

使用前提:

  • 需要引入微信 JS-SDK
  • 需要配置安全域名
  • 需要正确初始化微信 JS-SDK

基本使用示例:

html
<wx-open-launch-weapp
  id="launch-btn"
  username="gh_xxxxxxxx"
  path="pages/home/home"
>
  <template>
    <style>
      .btn {
        padding: 12px;
        background-color: #07c160;
        color: white;
        border-radius: 4px;
        text-align: center;
      }
    </style>
    <button class="btn">打开小程序</button>
  </template>
</wx-open-launch-weapp>

参数说明:

  • username小程序原始 ID,可在小程序后台「设置」-「基本设置」中查看,格式通常为 gh_xxxxxxxx
  • path跳转的小程序路径,指定要打开的小程序页面路径

问题描述

由于业务需求变更,客户需要在公众号中发布文章进行宣传推广。虽然服务号也能发布文章,但服务号每月只能发布4篇群发消息,无法满足客户的宣传推广需求。而订阅号每天可以群发1条消息(一个月最多可发布约30条),提供了更大的发布灵活性,更适合需要频繁宣传推广的场景。因此,我们重新申请了 订阅号,并将服务号上的用户和素材迁移到了订阅号。

迁移完成后,当我们将应用重新部署到订阅号上时,发现原来在 H5 页面中跳转小程序的按钮 点击没有任何反应,无法正常跳转到小程序。这个问题在服务号环境下是完全正常的,但在订阅号环境下却失效了。

排查过程

遇到问题后,我们进行了以下排查:

  1. 检查代码实现:确认代码逻辑没有改动,标签使用方式正确
  2. 检查 JS-SDK 配置:确认安全域名配置正确,JS-SDK 初始化成功
  3. 检查网络环境:确认在微信内置浏览器中访问
  4. 查看控制台错误:未发现明显的 JavaScript 错误

经过多方排查,最终在微信官方文档中找到了问题的根源。

原因分析

问题的根本原因是 权限限制

wx-open-launch-weapp 开放标签的使用权限:

  • 已认证的服务号:可以使用
  • 订阅号无法使用(无论是否认证)
  • 未认证的服务号:无法使用

这是微信平台对开放标签功能的限制,订阅号不具备使用该开放标签的权限。

解决方案

由于订阅号无法使用 wx-open-launch-weapp 开放标签,我们采用了以下替代方案:

方案一:公众号底部菜单栏跳转(推荐)

在公众号的 底部菜单栏 上添加菜单项,直接配置跳转到小程序。这是最简单且用户体验较好的方案。

配置步骤:

  1. 登录微信公众平台
  2. 进入「自定义菜单」设置
  3. 添加菜单项,选择「跳转小程序」
  4. 选择对应的小程序并配置路径

优点:

  • 配置简单,无需代码改动
  • 用户操作路径清晰
  • 符合微信生态使用习惯

缺点:

  • 只能在底部菜单栏使用,无法在 H5 页面内使用

方案二:小程序码/小程序链接

如果需要在 H5 页面中引导用户跳转小程序,可以使用:

  1. 小程序码:生成小程序码图片,用户长按识别
  2. 小程序链接:使用 weixin://dl/business/?t=* 格式的链接(需要用户手动复制)

注意事项

  1. 公众号类型选择:如果项目需要同时使用开放标签和发布文章功能,需要权衡选择公众号类型
  2. 认证状态:服务号必须完成认证才能使用开放标签
  3. 安全域名配置:使用开放标签的页面域名必须在微信公众平台配置安全域名
  4. JS-SDK 版本:确保使用最新版本的微信 JS-SDK
  5. 群发次数限制
    • 服务号:一个月(按自然月)内可发送四条群发消息
    • 订阅号:(认证用户、非认证用户)1天内可群发1条消息

总结

这次问题让我们深刻认识到,在选择微信公众号类型时,需要充分考虑业务需求和技术限制:

  • 服务号

    • ✅ 功能强大,支持开放标签、支付等高级功能
    • ✅ 可以发布文章,但一个月(按自然月)内只能发送四条群发消息
    • ⚠️ 群发次数限制较严格,如果每月需要发布超过4篇文章则无法满足
  • 订阅号

    • ✅ 可以发布文章,1天内可群发1条消息(认证用户、非认证用户均相同)
    • ✅ 群发次数限制更宽松(一个月最多可发布约30条),发布灵活性更高
    • ❌ 功能受限,不支持开放标签等高级功能

在项目规划阶段,应该根据实际需求选择合适的公众号类型,避免后期迁移带来的技术问题。

最后更新: