微信小程序判断分享的是群还是好友

本文转载自:https://blog.csdn.net/wangguang1995/article/details/80178465
微信官方文档相关知识点:https://developers.weixin.qq.com/miniprogram/dev/api/share.html


最近比较流行的答题小程序通常会有这么一个功能,分享到群增加答题次数,分享到好友无效,那么问题来了,我们如何能够判断用户分享到的是群还是好友呢?

通过查找API文档我发现会有这个一个东西withShareTicket 通过这个来判断是否分享到的是群还是好友,想要获取到这个需要这onShow方法里填加一个东西.

  onShow: function() {
    wx.showShareMenu({
      withShareTicket: true
    })
  },

只有设置了这个等于true才能够获取到群信息。但是问题又来了IOS系统和Android系统的判断方式是不一样的,我来说一下他们两个的区别:

	这个函数作用是你在分享到微信群之后可以获取shareTickets,
	
	通过wx.getShareInfo()和shareTickets,可以获取到分享群的加密过的信息。
	
	这里要注意下如果分享的是个人android仍然可以获取到shareTickets,
	
	而ios分享到个人是获取不到shareTickets的。
	
	如果是ios你可以在直接用if()判断shareTickets是否存在判断是否转发的是微信群。
	
	如果是android你要执行wx.getShareInfo()函数,如果是微信群就会调用success,不是微信群就会调用fail。
	
	必须调用wx.getshareInfo()获取群信息 包括 iv、encryptedData(换取openGId)

现在上一下完整的代码:

 //分享
 onShareAppMessage: function (res) {
      let that = this
      return {
          title: '分享的标题',
          path: '分享的页面链接',
          success: function (res) {
              //getSystemInfo是为了获取当前设备信息,判断是android还是ios,如果是android
              //还需要调用wx.getShareInfo(),只有当成功回调才是转发群,ios就只需判断shareTickets
              //获取用户设备信息
              wx.getSystemInfo({
                  success: function (d) {
                      console.log(d);
                      //判断用户手机是IOS还是Android
                      if (d.platform == 'android') {
                          wx.getShareInfo({//获取群详细信息
                              shareTicket: res.shareTickets,
                              success: function (res) {
                                  //这里写你分享到群之后要做的事情,比如增加次数什么的
                              },
                              fail: function (res) {//这个方法就是分享到的是好友,给一个提示
                                  wx.showModal({
                                      title: '提示',
                                      content: '分享好友无效,请分享群',
                                      success: function (res) {
                                          if (res.confirm) {
                                              console.log('用户点击确定')
                                          } else if (res.cancel) {
                                              console.log('用户点击取消')
                                          }
                                      }
                                  })
                              }
                          })
                      }
                      if (d.platform == 'ios') {//如果用户的设备是IOS
                          if (res.shareTickets != undefined) {
                              console.log("分享的是群");
                              wx.getShareInfo({
                                  shareTicket: res.shareTickets,
                                  success: function (res) {
                                      //分享到群之后你要做的事情
                                  }
                              })

                          } else {//分享到个人要做的事情,我给的是一个提示
                              console.log("分享的是个人");
                              wx.showModal({
                                  title: '提示',
                                  content: '分享好友无效,请分享群',
                                  success: function (res) {
                                      if (res.confirm) {
                                          console.log('用户点击确定')
                                      } else if (res.cancel) {
                                          console.log('用户点击取消')
                                      }
                                  }
                              })
                          }
                      }

                  },
                  fail: function (res) {

                  }
              })
          }

      }
  },

这里说一下分享到群的话,需要把返回的 iv,encryptedData,传给后台换取openGId(群ID)。
好了,今天就整理这么多了,感觉我的判断逻辑不是很严谨,欢迎来指出,大家一块学习。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值