美文网首页小程序
关于首次扫描普通二维码打开小程序onLoad获取参数为undef

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

作者: 烤奶要加冰 | 来源:发表于2023-03-15 14:07 被阅读0次

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

    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 时间戳
      }
    })
    

    相关文章

      网友评论

        本文标题:关于首次扫描普通二维码打开小程序onLoad获取参数为undef

        本文链接:https://www.haomeiwen.com/subject/xyplrdtx.html