淘宝小程序扫码进入参数

进入方式

目前我所用过的扫码进入方式有两种,一种是右上角官方分享中的当面分享,另一种是用画板(或者其他方式)自行生成二维码的分享。两种方式的传参和取参方式各有不同,最近又用到并踩了一遍坑,所以打算记录顺便分享一下。

官方的当面分享

官方的分享方式主要通过onShareAppMessage设置参数,具体可以参考官方文档
大意如下:

入参

入参我这边没用到,是Object 类型,属性如下:

属性类型说明
formString触发来源:button:页面页分享按钮触发;menu:右上角分享按钮触发。code:执行my.showSharePanel 触发
targetObjectbutton 或 undefined,依据form值而定
webViewUrlString页面中包含web-view组件时,返回当前web-view的URL

onShareAppMessage执行完后必须返回一个分享对象,用于自定义分享内容。

返回值

比较多,这里列一下主要用到的几个

属性类型必填描述
titleString自定义分享标题
descString自定义分享描述:由于分享到微博只支持最大长度 140 个字,因此建议长度不要超过该限制。
pathString自定义分享页面的路径,path中的自定义参数可在小程序生命周期的 onLoad方法中获取(参数传递遵循 http get 的传参规则)path和url两者至少需要填一个。
urlString分享完整的url,调用分享后将会使用该url作为回流地址。path和url两者至少需要填一个。注意:该参数,通过容器菜单内的分享时,不生效。
imageUrlString自定义分享卡片背景图片,支持:网络图片路径;注意:图片url需要上传到阿里特定可信域名下。

示例代码

如下是官方示例代码,传递了param参数并指定了分享链接进入的页面为page/component/component-pages/view。

Page({
  onShareAppMessage() {
    return {
      title: '小程序示例',
      desc: '小程序官方示例 Demo,展示已支持的接口能力及组件。',
      path: 'page/component/component-pages/view/view?param=123' 
    };  
   }, 
});
Page({
  onShareAppMessage() {
     return {
       title: '小程序示例',
       desc: '小程序官方示例 Demo,展示已支持的接口能力及组件。',
       url: 'https://m.duanqu.com?_ariver_appid=3000000002032702&page=page%2fcomponent%2fcomponent-pages%2fview%2fview%3fparam%3d123' 
     };  
   }, 
});

取参

利用onShareAppMessage进行分享后,从分享链接进入时则可在指定进入页面的onLoad事件query入参获得参数。下边是我的一段代码,描述的是如何从query中获取传递的参数。

  onLoad (query = {}) {
    // query = {
    //   "itemId": 123456789, // 这样可以mock分享带来的数据,虽然有点暴力...
    // }
    const {param} = query;
    console.log(param); // 如果按照官方文档的传参,那么将会输出 123
  },

生成二维码的分享

个人感觉自行生成二维码比较麻烦,但是好在比较灵活,花样也比较多,当然不限于二维码。我这里也就总结一下带参数链接的使用吧。
二维码链接分享主要是利用了app.js中onLaunch(第一次启动)或onShow(页面开始展示)方法获取到入参(object:Object),从中解析出query的参数。我这边目前使用的方法与官方文档有些许出入,具体可以对比着看。

object 属性说明:

属性类型描述
queryObject当前应用的 query,从启动参数的 query 字段解析而来
pathString当前应用的页面地址,从启动参数 page 字段解析而来,page 忽略时默认为首页
referrerInfoObject来源信息

官方方法

比如,启动应用的 schema url 如下:
https://m.duanqu.com/?_ariver_appid=20000067&query=number%3D1&page=x%2Fy%2Fz
参数解析如下:

query = decodeURIComponent('number%3D1'); // number=1
path = decodeURIComponent('x%2Fy%2Fz'); // x/y/z

应用首次启动时,onLaunch 方法可获取 query、path 属性值。
应用在后台被用 schema 打开,也可从 onShow 方法中获取 query、path 属性值。

自用方法入参夹带

需要使用encodeURIComponent将参数字符串转码,而且其中的“query=params=”是必须的记得要在链接中填入appId

generateGroupMiniAppUrl(params = { itemId: '', ...args }) {
  const { appId, ...args } = params;
  if (!appId) {
    console.error('null appId');
    return null;
  }
  let url = `https://m.duanqu.com?_ariver_appid=${appId}`;
  url = `${url}&query=params=${encodeURIComponent(JSON.stringify(params))}`;
  return url;
}

自用方法取参

onLaunch (options) {
	let {query = {}} = options;
	if (query) {
      const { params = '{}'} = query;
      const paramJson = JSON.parse(params);
      const {itemId: queryItemId} = paramJson;
      console.log(queryItemId); // '1234656'
	}
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值