H5跳转小程序主要有三种方式:
-
微信开放标签(推荐)- 在微信环境中使用
-
URL Scheme - 通过微信API生成跳转链接
-
wx.miniProgram - 在微信环境中直接调用
1. 微信开放标签方式(推荐)
HTML结构
<!-- 需要在微信环境中使用 --> <wx-open-launch-weapp appid="你的小程序appid" path="/pages/index/index" style="width:100%;height:40px;display:inline-block;vertical-align:middle;" > <script type="text/wxtag-template"> <button style="width:100%;height:40px;background:#0b5afe;color:#fff;border:none;border-radius:5px;"> 打开小程序 </button> </script> </wx-open-launch-weapp>
引入微信JS-SDK
<script src="https://res.wx.qq.com/open/js/open-tag.js"></script>
2. URL Scheme方式
第一步:获取access_token
getToken() {
uni.request({
url: "/api/cgi-bin/token",
method: 'GET',
data: {
"grant_type": "client_credential",
"appid": "你的小程序appid",
"secret": "你的小程序secret"
},
success: res => {
this.getScheme(res.data.access_token)
}
})
}
第二步:生成URL Scheme
getScheme(token) {
uni.request({
url: "/api/wxa/generatescheme?access_token=" + token,
method: 'POST',
data: {
"jump_wxa": {
"path": "/pages/index/index", // 跳转页面路径
"query": "from=h5", // 传递参数
"env_version": "release" // 版本:release/trial/develop
},
"is_expire": true,
"expire_type": 1,
"expire_interval": 1
},
success: res => {
this.openlink = res.data.openlink
}
})
}
使用URL Scheme跳转
// 方式1:直接跳转 window.location.href = this.openlink; // 方式2:链接点击 <a :href="openlink">跳转至小程序</a>
3. wx.miniProgram方式
在微信环境中直接跳转
openMiniProgram() {
if (typeof wx !== "undefined" && wx.miniProgram) {
// 跳转到指定页面
wx.miniProgram.navigateTo({
url: '/pages/index/index?from=h5'
});
// 或者跳转到tabBar页面
wx.miniProgram.switchTab({
url: '/pages/index/index'
});
}
}
4. 完整实现示例
环境检测
import { isWeixinClient } from "@/utils/tools.js";
// 检测是否在微信环境
checkWeixinEnvironment() {
this.isWeixin = isWeixinClient();
}
条件渲染
<!-- 微信环境使用开放标签 --> <wx-open-launch-weapp v-if="isWeixin" appid="..." path="..."> <script type="text/wxtag-template"> <button>打开小程序</button> </script> </wx-open-launch-weapp> <!-- 非微信环境使用URL Scheme --> <a v-else-if="openlink" :href="openlink">跳转至小程序</a> <!-- 备用方案 --> <button v-else @click="openMiniProgram">跳转至小程序</button>
5. 注意事项
微信开放标签限制
-
只能在微信环境中使用
-
需要引入微信JS-SDK
-
按钮样式需要写在template中
URL Scheme限制
-
需要后端API支持
-
链接有时效性
-
需要用户手动点击
小程序配置
-
确保小程序已发布
-
检查页面路径是否正确
-
确认appid和secret正确
6. 错误处理
openMiniProgram() {
if (this.isWeixin) {
if (typeof wx !== "undefined" && wx.miniProgram) {
wx.miniProgram.navigateTo({
url: '/pages/index/index?from=h5'
});
} else {
// 降级到URL Scheme
if (this.openlink) {
window.location.href = this.openlink;
} else {
uni.showToast({
title: '跳转失败,请重试',
icon: 'none'
});
}
}
} else {
if (this.openlink) {
window.location.href = this.openlink;
} else {
uni.showToast({
title: '请在微信中打开或重试',
icon: 'none'
});
}
}
}
7. 最佳实践
-
优先使用微信开放标签 - 用户体验最好
-
提供降级方案 - 确保在各种环境下都能跳转
-
添加错误处理 - 给用户友好的提示
-
测试各种场景 - 微信内、微信外、不同版本等
-
参数传递 - 通过query参数传递必要信息
3万+

被折叠的 条评论
为什么被折叠?



