微信小程序在小程序內(nèi)轉(zhuǎn)發(fā)的方式有兩個,分別是 和頁面右上角的轉(zhuǎn)發(fā),兩種轉(zhuǎn)發(fā)都會調(diào)用 Page.onShareAppMessage(options)。
要判斷是否轉(zhuǎn)發(fā)到群聊,需要使用用 wx.showShareMenu(OBJECT),并且參數(shù)withShareTicket為true。wx.showShareMenu({ withShareTicket: true})。轉(zhuǎn)發(fā)成功后,Page.onShareAppMessage() 的回調(diào)會返回shareTickets,可以通過轉(zhuǎn)發(fā)成功的回調(diào)判斷是否轉(zhuǎn)發(fā)到了群聊。
如果需要獲取轉(zhuǎn)發(fā)的詳細信息,可以使用 wx.getShareInfo(OBJECT),需要參數(shù)shareTicket,shareTicket 就是轉(zhuǎn)發(fā)成功后的回調(diào)的 shareTicket 。wx.getShareInfo(OBJECT)的回調(diào)會返回errMsg(錯誤信息)、encryptedData(包括敏感數(shù)據(jù)在內(nèi)的完整轉(zhuǎn)發(fā)信息的加密數(shù)據(jù))、iv(加密算法的初始向量)。
下面是是完整代碼
-
onShareAppMessage(res) {
-
-
-
//轉(zhuǎn)發(fā)時攜帶 shareTicket才能在回調(diào)中獲取到shareTickets
-
wx.showShareMenu({
-
withShareTicket: true
-
})
-
-
-
return {
-
title: '轉(zhuǎn)發(fā)時顯示的標題',
-
path: '轉(zhuǎn)發(fā)的頁面路徑',
-
-
success: res => {
-
console.log('--- 轉(zhuǎn)發(fā)回調(diào) ---', res);
-
-
//onShareAppMessage回調(diào)的shareTickets,如果沒有,就說明不是轉(zhuǎn)發(fā)到群聊的
-
console.log('--- shareTickets ---', res.shareTickets);
-
-
//轉(zhuǎn)發(fā)到群里的才會有shareTickets
-
if (res.shareTickets && res.shareTickets[0]) {
-
-
//獲取轉(zhuǎn)發(fā)的詳細信息
-
wx.getShareInfo({
-
shareTicket: res.shareTickets[0],
-
success: res => {
-
console.log('--- 錯誤信息 ---', res.errMsg);
-
console.log('--- 包括敏感數(shù)據(jù)在內(nèi)的完整轉(zhuǎn)發(fā)信息的加密數(shù)據(jù) ---', res.encryptedData);
-
console.log('--- 錯誤信息 ---', res.iv);
-
},
-
fail: error => {
-
console.log('--- getShareInfo fail ---',error);
-
}
-
})
-
}
-
},
-
fail: () => {
-
console.log('--- 轉(zhuǎn)發(fā)失敗 ---', path);
-
}
-
-
}
-
}
下面是轉(zhuǎn)發(fā)到個人和群聊的日志打印
轉(zhuǎn)發(fā)給個人時的日志 可以看到,轉(zhuǎn)發(fā)給個人時,轉(zhuǎn)發(fā)的回調(diào)只有errMsg。
轉(zhuǎn)發(fā)到群聊時的日志 轉(zhuǎn)發(fā)到群聊時,轉(zhuǎn)發(fā)的回調(diào)多了shareTickets。所以,可以通過是否有shareTickets來判斷是轉(zhuǎn)發(fā)給個人還是群聊。