uniapp H5与小程序/app多端跳转传参--研究实现篇

近期对接的客户需要把我们的H5使用webview嵌套在微信小程序以及app中,在某个时间点由H5进行跳转到小程序或者app页面,并携带参数

单纯使用微信sdk通过jWeixin.miniProgram跳转只能在微信小程序中使用,无法兼容多端

1.引入微信sdk与uni.webview.1.5.5.js

注意:uni.webview.1.5.5.js需要下载到本地,我这里是放在了static文件夹中

下载地址:https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/hybrid/html/uni.webview.1.5.5.js

 <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

  <script type="text/javascript" src="./static/uni.webview.1.5.5.js"></script>

2.在页面上直接使用uni.webView进行跳转

 uni.webView.redirectTo({
              url: `${customPayUrl}?${query}`,
            });

重点!!!!!!

如果你在index.html中直接引入,但是相关js并未加载,如下图,那么咱们可以通过在页面中动态插入的方式来引入(我的就必须动态引入)

动态引入方法:

 const script = document.createElement("script");
    script.src = "https://res.wx.qq.com/open/js/jweixin-1.4.0.js";
    document.head.appendChild(script);

    const uniScript = document.createElement("script");
    uniScript.src = "../../static/uni.webview.1.5.5.js";
    document.head.appendChild(uniScript);

### 实现 UniApp 框架下的 H5 页面向小程序传递参数 在 UniApp 开发环境中,实现H5 页面跳转小程序并携带参数的过程涉及多个步骤。为了确保跨平台兼容性和数据安全传输,在 H5 中需引入特定 JavaScript SDK 并配置相应接口权限。 #### 准备工作 首先需要确认项目已接入微信公众平台开放能力,并完成应用注册获取 AppID 和其他必要凭证信息。接着按照官方文档指引设置服务器域名白名单等基础环境准备事项[^2]。 #### 引入 WeChat JS-SDK 为使网页能够调用微信内浏览器提供的原生功能,必须加载 `jweixin` 库文件: ```html <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> ``` 随后初始化 SDK 配置项以便后续操作使用: ```javascript wx.config({ debug: false, // 生产环境下应设为false appId: 'YOUR_APP_ID', // 必填,公众号唯一标识 timestamp: '', // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名 jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表 }); ``` 注意上述代码中的 `appId`, `timestamp`, `nonceStr` 及 `signature` 字段均需由服务端动态计算得出以保障安全性。 #### 构建 URL Scheme 方式唤起小程序 对于希望直接打开指定路径的小程序实例而言,可通过构造特有格式链接来达成目的。具体形式如下所示: ``` http(s)://domain/path?params... ``` 转换成适用于微信生态的标准写法即成为: ``` wechat:\/\/discover\/open?uri=pages%2Findex%2Findex&query=key=value ``` 实际编码时推荐采用编程方式拼接字符串而非手动书写以免出错。下面给出一段基于 Vue 组件的方法示现实例: ```vue methods:{ openMiniProgram(){ const url = encodeURIComponent('pages/index/index?key=value'); window.location.href=`weixin://dl/business/?t=${url}`; } } ``` 此方法简单易懂但存在局限性——仅限于 iOS 设备支持;安卓则依赖 WebView 内核版本差异可能无法正常解析该协议头。因此建议优先考虑 API 接口方案。 #### 使用 wx.miniProgram.navigateTo() 方法 当目标终端处于微信客户端内部浏览场景下,可借助内置对象访问更便捷高效的途径。此时只需保证当前上下文中已经成功注入了 `wx` 命名空间即可执行以下命令: ```javascript if (typeof(wx) !== undefined && typeof(wx.miniProgram)!==undefined){ wx.miniProgram.navigateTo({url:'pages/index/index?key=value'}); }else{ console.log("not in wechat browser"); } ``` 这种方式不仅简化了逻辑判断过程还提高了用户体验流畅度。不过值得注意的是只有位于微信体系内的 Webview 才能识别此类指令集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值