微信官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-scheme.html
小程序(已上线的版本)需要配置明文scheme拉起,步骤如下:
微信公众平台配置
登陆微信公众平台 (https://mp.weixin.qq.com/)设置->隐私与安全->明文scheme拉起->配置->填写path项目中调用该方法
jumpToMiniProgram () {
console.log('测试跳转小程序');
let query ={
contractCode: "A20220802002",
scanCode: "测试跳转小程序",
ingoUrl: "",
brandId: "",
userId: "",
userName: ""
}
// 把对象转换成 a=1&b=2&c=3&d=4 的字符串格式
let queryString = Object.keys(query).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(query[key])}`).join('&')
// 对其进行转码
let res = encodeURIComponent(queryString)
console.log('queryString', queryString)
window.location.href = `weixin://dl/business/?appid=xxxxxxx&path=page/index/index&query=${res}`;
}
### 前置条件
1. 小程序开发技术栈: uni-app
2. 开通微信云开发
3. 开通静态网站,需要在「微信开发者工具 - 云开发 - 更多 - 静态网站」里进行
4. 官网链接: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/staticstorage/jump-miniprogram.html
### 开始
1. 从官网上把官网给的例子下载下来,放在自己小程序的根目录,根据官网的说明把要替换的内容进行调整。
2. 新建vue.config.js文件,内容如下
const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{
from: path.join(__dirname, 'cloudfunctions'),
to: path.join(__dirname, 'unpackage/dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'cloudfunctions')
}
])
]
}
}
3. 安装vue.config.js要用到的copy-webpack-plugin
。如果项目根目录没有package.json文件,执行一下 npm init
, 一路Enter。然后 执行 npm install --save copy-webpack-plugin
(安装下来的版本有点高,编译会报错,我做了降级处理,改成了^4.1.2版本)
4. 在manifest.json的视图源码中加上cloudfunctionRoot
/* 小程序特有相关 */
...
"mp-weixin" : {
"appid" : "wx57bc8e57fc6e6e0b",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true,
"cloudfunctionRoot" : "./cloudfunctions"
},
...
5. 进入cloudfunctions/public目录下, 执行 npm install
。
6. HBuliderX 运行 > 运行到小程序模拟器 > 微信开发者工具。
7. 在微信开发者工具中部署云函数,选中public文件夹,右键部署。
8. 云函数的权限我设置了允许所有用户访问。
### end
以上步骤,就完成了H5打开小程序的功能,在微信中点击第9步的链接,就能打开小程序了。在手机浏览器里访问第9步的链接,也会提示打开微信,然后打开小程序。
### 其它
wx.config中debug设置为true时,会提示noPermissionJsApi弹窗,然后我把debug设置为false就可以接着操作了。