vue h5跳转小程序

本文介绍了在项目中通过两种方式实现从微信公众号页面按钮跳转到小程序首页:方案一是利用URLScheme进行配置并直接跳转,无需额外配置;方案二是使用wx-open-launch-weapp标签,但需在服务器配置和前端请求接口获取签名。

项目中需要从一个微信公众号得页面按钮跳转到另一个小程序首页。目前亲测有效有2种方案如下

方案一(此种方式最简单直接,不需要配置各种config参数,一个链接搞定):

1、在跳转方的小程序平台上配置一个URL Scheme,配置好要唤起的地址,根据官网提供的流程生成链接如下(appid就是要跳转小程序的Appid;path就是你配置好要跳转的URL Scheme):weixin://dl/business/appid=wx71234567777ffd45&path=pages/index/index&query=&env_version=release

官网参考链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-scheme.html

2、上面配置好后在代码里写好点击事件直接location.href跳转即可。

方案二(使用wx-open-launch-weapp标签跳转):

前言,使用此标签跳转需要配置公众号的IP白名单,需要在当前h5代码存放的服务器上配置appsetting参数,需要在vue页面中请求接口获取wx.config的timestamp、nonceStr、signature;注意这里的参数获取最好通过接口返回,否则本地配置发送到正式环境测试时,会报错signature不合符要求。

1、服务器上的配置参数如下图圈出的部分(登录微信公众号找到对应的参数放进来):

2、vue页面初始化时获取到wx.config的参数。

  getShopWxConfig() {
      let urlParam = window.location.href;//.split("#")[0]
      this.$api.user.GetWXConfig(urlParam)
      .then( res => {
        let resData = JSON.stringify(res);//此处不需要反序列化,下面参数直接res.取值即可
        wx.config({
          debug: false, // 验证结果弹窗控制(成功或者失败)
          appId: "wxaff27***********", // 必填,微信公众号appid
          timestamp: res.timestamp, // 必填,生成签名的时间戳
          nonceStr: res.nonceStr, // 必填,生成签名的随机串
          signature: res.signature,// 必填,签名
          jsApiList: ["onMenuShareAppMessage"], // 必填,如果只是为了跳转小程序,随便填个值都行
          openTagList: ["wx-open-launch-weapp"] // 跳转小程序时必填
        });
        wx.ready(function() {
          //config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中
          // alert("ceshi"+resData);
        });
        wx.error(function(res) {
          // console.log('res',res);
          // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
        });
      })
      .catch( err => {
        Toast(err);
      })
    },

3、使用wx-open-launch-weapp来跳转,标签内的样式自行定义即可,注意:标签内的样式动态的不能解析。

完成这几步就可以开心的跳转了。

还有一种方案,测试未能正常跳转,如有使用此种方案能跳转的,欢迎留言指教。

增加click事件,使用wx.miniProgram.navigateTo跳转。

//   wx.miniProgram.navigateTo({
    //     appId: 'wx42f1*******',//要跳转的小程序的AppID
    //     path: 'pages/home/***',//要跳转的页面路径
    //     extraData: {
    //       // 传递的参数
    //     },
    //     success(res) {
    //       // 成功回调
    //        let resD = JSON.stringify(res);
    //       alert(resD+'sucessbug')
    //       console.log(resD)
    //     },
    //     fail(res) {
    //       let resD = JSON.stringify(res);
    //       // 失败回调
    //       alert("failddd"+resD)
    //       alert(resD)
    //       console.log(resD)
    //     }
    //   });

### Vue 开发的公众号 H5 页面跳转小程序的方法 在Vue项目中实现从微信公众号H5页面向小程序跳转主要依赖于`<wx-open-launch-weapp>`组件以及必要的配置工作。具体来说,在HTML结构里需引入特定的小程序开放标签,并确保这些标签被允许使用。 对于希望集成此功能的应用而言,服务器端返回的数据包内应该含有一个名为`openTagList`的数组属性,其中至少要包含字符串`'wx-open-launch-weapp'`作为其成员之一[^2]。这一步骤是为了告知前端哪些自定义标签是可以安全使用的,从而避免浏览器出于安全性考虑而阻止未知标签的行为。 当上述准备工作完成后,则可以在实际的HTML文档中编写如下所示的按钮元素来触发跳转动作: ```html <!-- HTML --> <button wx:if="{{canUse}}" open-type="launchApp" app-id="__APPID__" path="/page/index">前往小程序</button> ``` 这里需要注意的是,为了使该按钮能够正常运作并成功启动目标小程序,开发者应当替换掉模板中的占位符(即双下划线包围的部分),填入真实有效的应用ID(`__APPID__`)和预期打开的小程序内部路径(path)[^1]。 与此同时,在JavaScript逻辑层面上也需要做一些额外处理以增强兼容性和用户体验。下面是一段简单的脚本片段用于说明这一过程: ```javascript // JavaScript (Vue Component Method) methods:{ handleLaunchMiniProgram(){ const appId = 'your-mini-program-appid'; // 替换成自己的小程序appid const pagePath = '/pages/home/home?query=example'; // 可选参数 try { wx.miniProgram.switchTab({ url: pagePath, }); } catch (err){ console.error(err); // 如果失败则尝试另一种方式 window.location.href=`weixin://dl/business/?tousername=${appId}&path=${encodeURIComponent(pagePath)}`; } }, } ``` 这段代码首先试图调用微信内置API `switchTab()` 来平滑过渡到指定的小程序界面;如果遇到异常情况(比如当前环境不支持此类操作),那么就退回到传统的URL Scheme方式进行重定向。这种方式可以有效提升跨平台的一致性体验[^4]。 最后值得注意的是,整个流程的成功执行离不开正确的微信公众账号设置及其关联的小程序授权关系的确立。只有当两者之间建立了合法绑定之后,以上提到的技术手段才能顺利发挥作用[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值