若您希望自行设计转发按钮而非使用页面右上角预设的转发按钮,那么您需要在页面上嵌入一个带有open-type属性的组件。
share
接下来在页面中设置分享函数:
在执行onShareAppMessage函数时,针对传入的参数res,进行相应的处理。 若结果来源为“按钮”,{ // 来自页面内转发按钮 console.log(res.target) } return { title: '自定义转发标题', 路径:/pages/test/test,参数id值为123。 success: function (res) { // 转发成功 console.log(res) 只有在将内容转发至群聊并点击打开后,才能获取 shareTickets 的返回信息;而在单聊中则无法获取该值。 若(res存在shareTickets属性且该属性包含的元素数量大于0) { 应用调用了获取分享信息的接口,针对res.shareTickets数组中的第一个元素进行了操作。 } }, fail: function (res) { // 转发失败 console.log(res) } } }
现在即可开始转发,您将在群聊界面中发现有关本次分享的小程序信息卡片。这一卡片与各个群组相对应,而单独的聊天界面则不会显示此类信息。我们仅选取一条转发内容,因此直接选取第一条。至于获取群组ID的app函数,我们将在稍后进行介绍。
群成员点消息卡片
群成员点击消息卡片进入小程序,此时在app.js的特定路径下可以获取信息,这些信息每次都是独一无二的。与您分享时获取的信息不同,但它们指向的是同一个对应关系。
app.js:
// 在onShow中获取转发信息shareTicket onShow: function (options) { console.log(options) let scene = options.scene 场景值为1044,所涉及的小程序消息卡片携带有shareTicket。 if(scene == 1044) { 在此处,请根据实际需求调整ID,或者选择其他设置。 let id = options.query.id 执行函数this.getShareInfo,并传入参数shareTicket。 } }, // 获取加密信息encryptedData, iv 获取分享信息:函数定义,参数为shareTicket。 const z = this wx.getShareInfo({ shareTicket: shareTicket, success: function (res) { console.log(res) let {encryptedData, iv} = res if(encryptedData && iv) { 执行解码加密数据操作,调用z.getDecodeEncryptedData方法,参数为encryptedData和iv。 } }, fail: function (res) { console.log(res) } }) }, // 获取解密后的信息 获取解码加密数据:函数(加密数据,初始化向量){ // 发送到后台解析 wx.login({ success: function(res) { let code = res.code // 下面只是演示代码 // post({ 该链接指向的网址为:https://www.example.com/controller/getDecodeEncryptedData,该地址用于获取解码后的加密数据。 // data:{ // code, // encryptedData, // iv, // } // }) } }) },
首先,我们通过wx.获取和iv,然后将其传给后台进行解析。
在ta中,当后台解析成功后,就会返回一个。
此刻即可完成群组与用户的关联操作,此关联数据亦需存入系统后台。若后台尚未存储过头像及昵称信息,则此际亦可将用户的头像与昵称一同保存在系统后台。
类似于下面这样的一个接口:
// 下面只是演示代码 post({ 该URL指向的地址为:https://www.example.com/controller/bindGroupAndUser,用于绑定用户与用户组。 data:{ code, openGId } })
该代码通过调用wx函数来获取,后台凭借此code能够获取所需信息,进而完成绑定操作。
随后,根据实际需求,或许还需开发一个用于保存用户基本资料以及获取群组成员名单的接口。
基本思路就是这样,我将在另一篇文章中描述后端的相关处理。
参考