toFrankie / blog

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

小程序启动参数相关问题 #152

Open toFrankie opened 1 year ago

toFrankie commented 1 year ago

一、支付宝小程序

相关链接:

// scheme 链接
alipays://platformapi/startapp?appId=[appId]&page=[pagePath]&query=[params]
参数 描述 示例
appId 要跳转的目标小程序 appId 20170713077xxxxx
pagePath 要跳转到目标小程序的具体 page 页面,该值等于 app.json 里面的配置值;如果不带 page 字段,默认跳转到小程序首页。

注意:如 pagePath 需要带参数,也要进行 UrlEncode 处理。
pages/index/index
query 表示从外部 APP 携带的参数透传到目标小程序;如果不需要携带参数给小程序,可以不带该参数。

query:启动参数,内容按照格式为:参数名=参数值&参数名=参数值

注意:query 携带的启动参数必须进行 UrlEncode 否则只能获取第一个参数!
xx%3Dxx
1. 应用逻辑

每次通过 scheme 调用,前端表现是重新触发 onLaunchonShow,都会传参给 app.jsonLaunchonShow,基础页面会重新触发 onLoadonShow 方法。

在保活期间(5分钟),比如锁屏之后,会重新触发 onShow 方法,但是却没法获取参数,也就是传参 scheme 只会在调用的时候触发一次,再次启动只是触发 onShow 不会传参。只能前端在 onShow 里做相应的业务逻辑。

2. 页面的逻辑

当小程序用 scheme 从后台唤起的时候,其实相当于重新被打开了 onLoad,还有 onShow 都会被触发。

在保活期间(5分钟)被重新唤起的时候,就只会触发 onShow

3. 小程序通过 scheme 跳转如何获取启动参数

在小程序 app.jsonLaunchonShow 进行获取启动参数。

如果冷启动,则会在 onLaunch(options) 中获得参数; 如果为热启动,则会在 onShow(options) 中获得参数。建议冷启动中获取不了的时候,再尝试在 onShow 中获取,若还是获取不了,则可判定为没有拿到该参数。

4. 其他

my.switchTab()my.navigateBack() 不支持带参跳转。

二、微信小程序

大同小异,后续补上...