小程序模板网

首页 小程序模板网 开发文档 小程序开发教程正文

微信小程序群功能开发-前端篇

发布时间:2018-05-08 11:26 所属栏目: 小程序开发教程

我们在一些微信群中看到过这样的小程序分享卡片:当你点进去后,会看到一个列表,里面有其他群成员的头像和相关信息。比如《王者荣耀群排行》,但是段位信息是腾讯私有的接口,我们只能拿到头像和昵称等基础信息。

下面我将实现小程序端的从转发到用户点击卡片后获取信息的这个过程。

基本思路

 

开启

首先我们要调用wx.showShareMenu进行设置,来开启是否使用带shareTicket的转发,这个shareTicket是开发群功能的关键:

 

  1. wx.showShareMenu({
  2. withShareTicket: true,
  3. })

我一般将其放在页面onShow中。

 

触发转发事件

如果要自定义转发按钮而不是有默认右上角的转发按钮,需要在页面中放置一个open-type="share"的button组件:

 

  1. open-type="share">share

接下来在页面中设置分享函数onShareAppMessage:

 

  1. onShareAppMessage: function (res) {
  2. if (res.from === 'button') {
  3. // 来自页面内转发按钮
  4. console.log(res.target)
  5. }
  6. return {
  7. title: '自定义转发标题',
  8. path: '/pages/test/test?id=123',
  9. success: function (res) {
  10. // 转发成功
  11. console.log(res)
  12. // 只有转发到群聊中打开才可以获取到 shareTickets 返回值,单聊没有 shareTickets
  13. if (res.shareTickets && res.shareTickets.length>0) {
  14. app.getShareInfo(res.shareTickets[0])
  15. }
  16. },
  17. fail: function (res) {
  18. // 转发失败
  19. console.log(res)
  20. }
  21. }
  22. }

现在就可以进行转发了,在群聊中将会看到此次分享的小程序消息卡片。每个shareTicket对应每个群并且单聊不会有该值。这里只选择一个转发,所以直接取第一个。至于app.getShareInfo是用来获取群id(openGId)的函数,我们放到后面介绍。

 

群成员点消息卡片

当群成员点消息卡片进入小程序后,在app.js的onShow/onLaunch的options中可以获取到shareTicket,shareTicket每次都是不一样的,比分你分享的时候获取到的跟这里获取到的不是同一个,但是会对应同一个openGId。

 

app.js:

 

  1. // 在onShow中获取转发信息shareTicket
  2. onShow: function (options) {
  3. console.log(options)
  4. let scene = options.scene
  5.  
  6. // 场景值是1044,带 shareTicket 的小程序消息卡片
  7. if(scene == 1044) {
  8. let shareTicket = options.shareTicket
  9. // 这里的id根据自己的具体需求进行操作,也可以设置其他的
  10. let id = options.query.id
  11. this.getShareInfo(shareTicket)
  12. }
  13. },
  14.  
  15. // 获取加密信息encryptedData, iv
  16. getShareInfo: function (shareTicket) {
  17. const z = this
  18. wx.getShareInfo({
  19. shareTicket: shareTicket,
  20. success: function (res) {
  21. console.log(res)
  22. let {encryptedData, iv} = res
  23.  
  24. if(encryptedData && iv) {
  25. z.getDecodeEncryptedData(encryptedData, iv)
  26. }
  27. },
  28. fail: function (res) {
  29. console.log(res)
  30. }
  31. })
  32. },
  33.  
  34. // 获取解密后的信息
  35. getDecodeEncryptedData: function (encryptedData, iv) {
  36. // 发送到后台解析
  37. wx.login({
  38. success: function(res) {
  39. let code = res.code
  40.  
  41. // 下面只是演示代码
  42. // post({
  43. // url:'https://www.example.com/controller/getDecodeEncryptedData'
  44. // data:{
  45. // code,
  46. // encryptedData,
  47. // iv,
  48. // }
  49. // })
  50. }
  51. })
  52. },

首先,我们通过wx.getShareInfo获取encryptedData和iv,然后将其传给后台进行解析。

在getDecodeEncryptedData中,当后台解析成功后,就会返回一个openGId。

此时就可以将群openGId与用户openid进行绑定了,这个绑定信息也是要保存到后台的。如果后台没有保存过头像昵称信息,此时也可以将用户头像和昵称一起保存到后台。

类似于下面这样的一个接口:

 

  1. // 下面只是演示代码
  2. post({
  3. url:'https://www.example.com/controller/bindGroupAndUser'
  4. data:{
  5. code,
  6. openGId
  7. }
  8. })

其中的code调用wx.login获得,后台根据这个code能获取到openid。然后进行绑定。

然后根据自己的需求,可能还要一个保存用户基础信息和拉取群成员信息列表的接口。

基本思路就是这样,我将在另一篇文章中描述后端的相关处理。


易优小程序(企业版)+灵活api+前后代码开源 码云仓库: star fork
本文地址:https://www.eyoucms.com/wxmini/doc/course/24325.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
  • 1 微信小程序自定义组件 - 表格组件来啦
  • 2 微信小程序自定义navigationBar顶部导航栏,兼容适配所有机型(附完整案例)
  • 3 手机界面设计尺寸规范
  • 4 小程序-记牌器
  • 5 微信小程序app.json文件常用配置说明
  • 6 微信小程序获得session_key和openId(加解密、签名系列)
  • 7 微信小程序|实现界面滑动切换
  • 8 小程序登录的最优流程
  • 9 微信小程序尺寸单位rpx和样式使用详解
  • 10 微信小程序-scroll-view滚动到指定位置(类似锚点)
  • 1 微信小程序app.json文件常用配置说明
  • 2 微信小程序文字控制单行超过显示省略号
  • 3 微信小程序参数传递的几种方法
  • 4 微信小程序使用button按钮分享
  • 5 微信小程序的setData
  • 6 小程序分享,获取openid
  • 7 微信小程序-实现tab
  • 8 微信开发者工具新建和导入小程序
  • 9 微信小程序实现点击拍照长按录像功能
  • 10 微信小程序必知知识

产品

  • 商业授权
  • 开通会员
  • 易优代理
  • 推荐主机

服务

  • 更新日志
  • 用户案例
  • 加入Q群
  • 增值服务

帮助

  • 易优问答
  • 标签手册
  • 易优技巧
  • 功能字典

关于

  • 关于易优
  • 知识产权
  • 版权声明
  • 隐私协议

工作日 8:30-12:00 14:30-18:00
周六及部分节假日提供值班服务

联系我们
QQ在线咨询
  • 业务客服
  • 付费修改
  • 加入Q群
  • 微信客服

    工作日 8:30-12:00 14:30-18:30

PHP网站源码陇南网站推广工具报价飞来峡阿里店铺托管报价阳泉百度爱采购横岗高端网站设计福田网站改版报价开封企业网站改版公司达州SEO按天计费报价聊城企业网站建设六安关键词按天扣费哪家好德阳百度网站优化安阳SEO按天扣费公司广州网络营销报价吴忠至尊标王价格白银关键词排名公司清远网站改版毕节网站优化按天扣费报价通辽高端网站设计荷坳网络营销公司鄂州关键词按天扣费报价怀化企业网站制作哪家好坪山网站优化软件公司威海推广网站报价盘锦seo排名价格百色SEO按效果付费哪家好惠州网络推广推荐大庆网站优化按天扣费价格六安网站推广系统推荐哈密网页制作哪家好廊坊网站制作多少钱黄冈网站seo优化哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化