toFrankie / blog

种一棵树,最好的时间是十年前。其次,是现在。
20 stars 1 forks source link

小程序 onLaunch 参数差别 #299

Open toFrankie opened 1 year ago

toFrankie commented 1 year ago

今天在调整小程序项目获取参数的方法时,发现一直以来有个参数记错了,所以整理一下微信、支付宝、百度小程序的 App.onLaunch 参数的差别,大体相似,但还是有细微的区别。

微信小程序

相关说明

{
  path: 'pages/handle/handle', // 启动小程序的路径
  scene: '1037', // 场景值
  query: {
    // 启动小程序的 query 参数
    // 若没有启动参数,则返回一个空对象
    // ...
  },
  shareTicket: undefined, // string 类型,转发信息
  referrerInfo: {
    // 来源信息
    appId: '', // 来源小程序、公众号或者 App 的 AppId
    extraData: {
      // 来源小程序传过来的数据,scene=1037 或者 1038 时支持
      // ...
    }
  }
}

返回有效 referrerInfo 的场景有这些

支付宝小程序

相关说明

{
  path: 'pages/handle/handle', // 当前小程序的页面地址,从启动参数 page 字段解析而来,page 忽略时默认为首页。
  scene: '1037', // 场景值
  query: {
    // 启动小程序的 query 参数
    // 若没有启动参数,则不会返回 query 参数。这点跟微信小程序有区别
    // ...
  },
  referrerInfo: {
    // 来源消息
    appId: '', // 来源小程序
    sourceServiceId: '', // 来源插件,当处于插件运行模式时可见。(注意:基础库 1.11.0 版本开始支持)
    extraData: {
      // 来源小程序传过来的数据。
      // ...
    }
  }
}

百度小程序

相关说明

需要注意的是,百度小程序之间跳转是通过 appKey 的,所以获取到的 referrerInfo.appId 也是指 appKey。这点跟微信、支付宝小程序是有区别的。

{
  path: 'pages/handle/handle', // 打开小程序的路径。
  scene: '11700000', // 打开智能小程序的场景值,scene 值统一由百度小程序场景值管理中心在 B 端平台统一配置后下发到宿主(例如百度 App),调起协议中会携带相应入口的 scene 值。
  query: {
    // 打开当前页面路径中的参数
    // ...
  },
  shareTicket: '', // 标记转发对象
  referrerInfo: {
    // 从另一个小程序打开该小程序时,返回此字段
    appId: '', // 来源小程序的 appKey
    extraData: {
      // 来源小程序传过来的数据
      // ...
    }
  }
}

三者的部分区别

1. query 来源:

支付宝小程序

2. query 对象: