shareId 的产生与传递链路
我先全局搜一下 shareId
的写入与读取位置,确认它是在哪里生成并写入缓存的。随后我会并行查看是否有通过 URL 参数或分享参数注入 shareId
的逻辑。
我先打开 App.vue
查看 onLaunch
里如何从查询参数写入 shareId
,以确认来源与条件。
我已在全局检索并查看了 App.vue
与 utils/app.js
,确认 shareId 的生成与注入逻辑。下面是结论:
shareId 的产生与传递链路
- 用户 A 生成分享链接时,系统会把他的
userId
写入分享参数spm
:
export const getShareUrlParams = (params) => {let path = util.urlEncode({spm: store.getters.userId, // 推荐人ID...params})return path;
}
- 用户 B 通过该链接/入口打开小程序,
onLaunch
会从启动参数里读取spm
,并写入本地缓存为shareId
:
onLaunch(options) {// 小程序主动更新this.updateManager()if (options.query.spm) {uni.setStorageSync('shareId', options.query.spm);}
},
- 随后在登录流程中读取本地的
shareId
上传给后端(若没有则传 0):
// 提交到后端
store.dispatch('MpWxAuthLogin', { code: app.code, shareId: (uni.getStorageSync('shareId') ? uni.getStorageSync('shareId') : 0) })
简述
-
shareId 实际上来源于别人分享时携带的
spm
,该值等同分享者的userId
。 -
首次进入时由
onLaunch
把spm
落到本地shareId
,后续登录等场景从本地读取并上送后端用于归因。 -
本次结论:定位并核对了
spm -> shareId
的落库与读取链路,确认shareId
来自分享者userId
,通过启动参数注入并在登录时上传。