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