原創聲明:本文為作者原創,未經允許不得轉載,經授權轉載需注明作者和出處
這是在網上搜索到的相關資料,可是我壓根看不懂,求大神指點?
微信小程序 轉發功能的實現
1.當用戶將小程序轉發到任一群聊之后,可以獲取到此次轉發的 shareTicket
2.此轉發卡片在群聊中被其他用戶打開時,可以在 App.onLaunch() 或 App.onShow 獲取到另一個 shareTicket
3.兩步獲取到的 shareTicket 均可通過 wx.getShareInfo() 接口可以獲取到相同的轉發信息。
onShareAppMessage(options)函數設置該頁面的轉發信息。
options參數說明:
from:轉發事件來源。button:頁面內轉發按鈕;menu:右上角轉發菜單;
target:如果 from 值是 button,則 target 是觸發這次轉發事件的 button,否則為 undefined
自定義字段:
return{
title:’轉發’,// 轉發標題(默認:當前小程序名稱)
path:’/pages/index/index’,// 轉發路徑(當前頁面 path ),必須是以 / 開頭的完整路徑
success(e) {
// shareAppMessage: ok,
// shareTickets 數組,每一項是一個 shareTicket ,對應一個轉發對象
// 需要在頁面onLoad()事件中實現接口
wx.showShareMenu({
// 要求小程序返回分享目標信息
withShareTicket:true
});
},
fail(e) {
// shareAppMessage:fail cancel
// shareAppMessage:fail(detail message)
},
complete() { }
}
wx.showShareMenu(OBJECT) 帶 shareTicket 的轉發。
1.在SDK中與真機調試的過程中,都需要設withShareTicket為true,
2.否則在真機的調試過程中,即便選擇了轉發的群聊,也不會返回shareTicket
onLoad(e) {
wx.showShareMenu({
withShareTicket:true
})
}, onShow(e) {
wx.showShareMenu({
withShareTicket:true
})
},
wx.getShareInfo(OBJECT)獲取轉發詳細信息
if(res.shareTickets) {
// 獲取轉發詳細信息
wx.getShareInfo({
shareTicket: res.shareTickets[0],
success(res) {
res.errMsg;// 錯誤信息
res.encryptedData;// 解密后為一個 JSON 結構(openGId 群對當前小程序的唯一 ID)
res.iv;// 加密算法的初始向量
},
fail() {},
complete() {}
});
}
小程序在群里被打開后,獲取情景值和shareTicket
//app.js
App({
onLaunch:function(ops) {
if(ops.scene == 1044) {
console.log(ops.shareTicket)
}
}
})
Bug & Tip
1.頁面之間的參數傳遞,需要在onLoad()函數中接收,onShow()函數中無法接收。
2.獲取群聊中被打開的小程序的shareTicket,需要在App.onLaunch() 或 App.onShow()。 頁面的生命周期函數中是獲取不到的。
3.將轉發內容至單個用戶時,是無法獲取到shareTicket 。