小程序与线下对接的时候,用到普通二维码这个功能来知道连接上来的是哪台终端机,但是获取二维码参数的时候官方就一句话带过,现在记录一下配置以及获取的过程。
- 首先在微信公众平台->开发->开发设置->扫普通链接二维码打开小程序里配置普通链接二维码规则
-
在用户通过微信扫一扫打开小程序之后的页面onLoad中,原先使用option.参数的方法是获取不到值的。
这是官方文档给的取值说明,但是在开发中发现真机测试、进入场景和体验版小程序都无法复现扫码进来的状态,最后只好打印发布在线上,然后通过线上打印的方式查看扫描的参数是什么。
-
图为线上版打印参数
onLoad: function (options) {
console.log("index 生命周期 onload" + JSON.stringify(options))
//在此函数中获取扫描普通链接二维码参数
if(options.q){
let q = decodeURIComponent(options.q);
console.log("index 生命周期 onload url=" + q)
console.log("index 生命周期 onload 参数 is_water=" + utils.getQueryString(q, 'is_water'))
var is_water = utils.getQueryString(q, 'is_water');
console.log(is_water);
console.log("index 生命周期 onload 参数 access_token=" + utils.getQueryString(q, 'access_token'))
var access_token = utils.getQueryString(q, 'access_token');
console.log(access_token);
}
}
- utils.js截取方法如下:
let getQueryString = function (url, name) {
var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
var r = url.substr(1).match(reg)
if (r != null) {
return r[2]
}
return null;
}
module.exports = {
getQueryString: getQueryString
}
- 通过上面方法即可获取普通二维码所携带的参数进行判断了