关于首次扫描普通二维码打开小程序onLoad获取参数为undefined的问题

使用普通二维码打开小程序的场景,主要是为了记录是用户都是扫描哪一个二维码进入的。

1. 配置扫普通链接二维码打开小程序

打开微信公众平台 > 开发管理 > 开发设置 > 添加普通二维码地址


image.png

2. 二维码跳转规则配置

详细内容参照官方文档

3. 二维码内容获取(重点)

下面是官方文档中给出的代码示例

Page({
  onLoad(query) {
    const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
    const scancode_time = parseInt(query.scancode_time) // 获取用户扫码时间 UNIX 时间戳
  }
})

在扫码跳转小程序成功后,onLoad函数中可以接收到二维码中的内容
例如,二维码中内容为:https://www.qq.com/a/?id=123
则在小程序中的query.q的值为:'https%3A%2F%2Fwww.qq.com%2Fa%2F%3Fid%3D123'
使用decodeURIComponent解码后得到原来的数据。

但是
在测试中发现,首次扫码打开小程序后,query的值为undefined,当切换小程序到后台之后重新扫码,之后的query的值均是二维码中的内容。

解决方法
const q = decodeURIComponent(query.q)修改成以下内容,此时options.q的值就是为二维码中的内容

var pages = getCurrentPages();
var page = pages[pages.length - 1];
const options = page.options;

完整代码

Page({
  onLoad(query) {
    var pages = getCurrentPages();
    var page = pages[pages.length - 1];
    const options = page.options; // 获取到二维码原始链接内容
    const scancode_time = parseInt(options.scancode_time) // 获取用户扫码时间 UNIX 时间戳
  }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容