本文转载自: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)。
好了,今天就整理这么多了,感觉我的判断逻辑不是很严谨,欢迎来指出,大家一块学习。