最近比較流行的答題小程序通常會有這麼一個功能,分享到羣增加答題次數,分享到好友無效,那麼問題來了,我們如何能夠判斷用戶分享到的是羣還是好友呢?
通過查找API文檔我發現會有這個一個東西withShareTicket 通過這個來判斷是否分享到的是羣還是好友,想要獲取到這個需要這onShow方法裏填加一個東西
//設置分享獲取shareTicket
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)。
好了,今天就整理這麼多了,感覺我的判斷邏輯不是很嚴謹,歡迎來指出,大家一塊學習。
想要獲得更多資料的 請微信搜索公衆號 【熱血科技】,關注一下即可。