小程序與線下對接的時候,用到普通二維碼這個功能來知道連接上來的是哪臺終端機,但是獲取二維碼參數的時候官方就一句話帶過,現在記錄一下配置以及獲取的過程。
- 首先在微信公眾平臺->開發->開發設置->掃普通鏈接二維碼打開小程序里配置普通鏈接二維碼規則
-
在用戶通過微信掃一掃打開小程序之后的頁面onLoad中,原先使用option.參數的方法是獲取不到值的。
這是官方文檔給的取值說明,但是在開發中發現真機測試、進入場景和體驗版小程序都無法復現掃碼進來的狀態,最后只好打印發布在線上,然后通過線上打印的方式查看掃描的參數是什么。
image.png -
圖為線上版打印參數
image.png
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
}
- 通過上面方法即可獲取普通二維碼所攜帶的參數進行判斷了