获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

时间:2022-12-29 21:51:50

本文主要介绍如何在微信开发者工具中,模拟微信扫描小程序码打开小程序的场景,进行调试。
二维码调试可以看这篇文章:微信开发者工具模拟扫描二维码调试

  1. 添加编译模式
    添加一个咱们自定义的编译模式
    获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

  2. 输入模式名称
    主要是方便后面的查找
    获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

  3. 设置启动页面
    这里填写的页面是扫描小程序二维码后要跳转到的页面地址(我这里就是首页了)
    获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

  4. 设置启动参数
    设置启动参数这里就比较麻烦了,和二维码的GET形式不一样了。

所有的参数都是写在scene里面的(这里不要直接写成GET的键值的方式,这里所有参数必须完整的写在 scene 里面)。例如:scene=950-0-1391 或者 scene=a=1&b=2(不推荐第二种方法,因为拿到的是 scene 的字符串,还需要自己解析)。
scene里面的参数按照自己的规则进行设置,因为拿到的时候一个整体,所以需要解析(我这里用的-进行分隔)。
onLoad(options)里面获取参数的时候,要用decodeURIComponent进行解码,因为在传递参数的时候,会对参数进行encodeURIComponent编码。
如果在每次启动的时候都要获取参数的话,需要用 wx.getLaunchOptionsSync() 来获取参数,因为有时候只用 onLoad(options) 里面的 options 获取不到。

后面有获取参数的示例代码

获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试
5. 设置进入场景
这里就是选择通过什么方式进入了,可以选择小程序码,也可以选择二维码。
获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试
6. 选择编译方式进行编译
每次项目重新编译后,都会自动进入扫描小程序码/二维码后我们设置的启动页面,同时自动传入设置的启动参数。
获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

  1. 获取小程序码传递的参数

所有的参数都是写在scene里面的(这里不要直接写成GET的键值的方式,这里所有参数必须完整的写在 scene 里面)。例如:scene=950-0-1391 或者 scene=a=1&b=2(不推荐第二种方法,因为拿到的是 scene 的字符串,还需要自己解析)。
scene里面的参数按照自己的规则进行设置,因为拿到的时候一个整体(一整个字符串),所以需要解析(下面的例子用的-进行分隔)。
因为有时候用 onLoad(options) 里面的 options 获取不到,所以需要用 wx.getLaunchOptionsSync() 来获取参数。
因为小程序码在传递参数的时候,会对参数进行encodeURIComponent编码,所以要用decodeURIComponent进行解码,才可以正常使用。

Object wx.getLaunchOptionsSync() 官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html

代码示例:

onLoad(options) {
  // 获取小程序启动时的参数
  let obj = wx.getLaunchOptionsSync();
  let query = null;
  if(query || obj.query.scene){
  	// 这里是用开发者工具模拟的时候要先用 encodeURIComponent 编译,模拟真实传递参数的效果,项目发布审核的时候这句话要注释掉
  	// query = options ? encodeURIComponent(options.scene) : encodeURIComponent(obj.query.scene);
  	query = options ? decodeURIComponent(options.scene) : decodeURIComponent(obj.query.scene);
  	//解析参数
    let web_key = query.split("-")[0];
    let web_template = query.split("-")[1];
    let web_id = query.split("-")[2];
    console.log("第一个参数:", web_key);
    console.log("第二个参数:", web_template);
    console.log("第三个参数:", web_id);
  }
},

获取微信小程序码传递的参数 / 微信开发者工具模拟扫描小程序码调试

具体如何生成无限制小程序码,可以看我的另一篇文章:生成无限制微信小程序码