先描述应用场景:
一种有效得推广手段,就是配置跳转小程序链接二维码,从而引流到微信小程序.
操作流程如下图:
然后用 这个测试地址生成一个二维码,举个栗子比如下面这个生成一个二维码,手机切换到体验版,扫码进入首页就可以了
https://api.XXXXX.com/share?uid=324
这里补充一个知识点: 这个链接地址 小程序里面得到的是一个q的参数标识.
参考这篇文章: https://www.jianshu.com/p/6c62a161e609
贴一下核心的业务代码:
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
}
通过上面方法即可获取普通二维码所携带的参数进行判断了
当然还有一种极端操作,如果我想在onLaunch生命周期里面获取,应该怎么操作呢?
当然还有一种极端操作,如果我想在onLaunch生命周期里面获取,应该怎么操作呢?
获取的参数会发生变动 :options?.query?.q
onLaunch: function(options) {
if(options?.query?.q){
let q = decodeURIComponent(options.query.q);
let uid = getQueryString(q, 'uid');
if(uid){
this.inviteUserId = uid;
uni.setStorageSync('inviteUserId',uid)
}
console.log('uid======onLaunch=======',uid)
}
这个二维码规则要“发布”一下,不发布微信开发者工具还是不识别。