需求: 现有首页index和新增车辆页add-car。
正常操作流程是:从首页index点击按钮,会携带参数id跳转到新增车辆页add-car。
现在需求是用户A从首页index携带参数id跳转到新增车辆页add-car,在add-car页面点击分享按钮,将次页面发送给微信好友(被分享者B);
微信好友(被分享者B)点击分享卡片直接打开新增车辆页add-car,然后上传信息图片,点击下一步,传递参数id调用接口。完成操作。
问题:
1.因为是将新增车辆页add-car分享给用户打开新增车辆页add-car,微信好友(被分享者B)如何获取到用户A传递的参数id就是一个问题。
2.分享页面给微信好友(被分享者B),微信好友(被分享者B)点击时候报提示:开发版小程序已过期,请在开发者工具中重新扫码;(导致原因: 这是因为你在本地测试环境分享给好友,好友没有扫码,也没有开发权限。导致的好友打不开,部署生产环境是不会有这个问题的。)
注意点:
1.onShareAppMessage(res){} 方法,在此方法内是可以配置分享哪个页面和传递参数。
2.如果只是写了 <button open-type="share">分享</button>
,那么点击这个分享按钮是可以直接分享本页面的。但是就没办法触发分享别的页面,同时小程序的右上角的三个点点点…,点击打开 那个默认分享事件也是不可选的。
一、首页index代码:点击跳转按钮需要向新增车辆页add-car传递参数id
点击跳转的按钮事件:
addCar(item) {// 这一步是为了存入客户id 然后在添加车辆页面 通过option 拿到customer_id使用uni.setStorageSync('customer_id', item.id);let obj = {item: {id: uni.getStorageSync('customer_id')},typeValue: "add",title: "新增车辆",};uni.navigateTo({url:"/pagesA/add-car?obj= " +encodeURIComponent(JSON.stringify(obj)),});},
二、新增车辆页面add-car: 此页面存在分享按钮,分享的也是此页面,好友打开后可以获取到对应的customer_id;
(同理如果想要携带分享者既用户A的相关信息,例如登录的信息cookie等,也可以通过分享页path字符串和getStorageSync配合传参以及获取参数)
html:只需写入此按钮
<!-- 小程序分享 必须是 按钮+open-type="share" 可以通过 v-if="flagShare" 来控制是否显示按钮 --><button open-type="share">分享</button>
data:
flagShare: true,//在正常流程首页到新增车辆页是true 在分享卡片打开页是false
js部分:
onLoad(option) {const obj = JSON.parse(decodeURIComponent(option.obj));this.picObj.customer_id = obj.item.id// if else是为了判断当前add-car页是通过首页index打开的 还是通过点击分享卡片打开的// 判断的依据就是路径path携带的参数(在index页是不传递share属性 但是分享页分享出去的 是传递了share属性对的)if (obj.item.share) {this.flagShare = falseconsole.log('分享页打开');// 如果想要被分享者1 将此页面分享给另一个用户(被分享者2)同时传递id 那么就需要在被分享者1的缓存中存入id(既下方注释) 这样在被分享者1点击分享时候 onShareAppMessage才能获取到id进行传递// uni.setStorageSync('customer_id', this.picObj.customer_id);} else {this.flagShare = trueconsole.log('默认首页操作进来');}},// 加了此方法,才能点击分享按钮或者右上角的分享三个小点 ...onShareAppMessage(res) {let obj = {item: { id: uni.getStorageSync('customer_id'), share: true },typeValue: "add",title: "新增车辆",};if (res.from === 'button') {// 来自页面内分享按钮console.log(res.target)}// 向分享页面传参 通过字符串路径即可(在对应的分享页的onLoad获取即可)return {title: '尊敬的车主,请您上传证件!',path: "/pagesA/add-car?obj= " +encodeURIComponent(JSON.stringify(obj)),}},
三、各页面
首页index:
新增车辆add-car页:
点击发送分享按钮:
好友点击分享卡片打开报: 开发版小程序已过期,请在开发者工具中重新扫码(问题截图,此问题不用管,生产环境部署好,直接看生产环境的不会有此问题)
线上 生产环境被分享者(用户B)点击分享卡片打开的页面: