微信小程序 轉發(fā)功能的實現(xiàn)
1.當用戶將小程序轉發(fā)到任一群聊之后,可以獲取到此次轉發(fā)的 shareTicket
2.此轉發(fā)卡片在群聊中被其他用戶打開時,可以在 App.onLaunch() 或 App.onShow 獲取到另一個 shareTicket
3.兩步獲取到的 shareTicket 均可通過 wx.getShareInfo() 接口可以獲取到相同的轉發(fā)信息。
onShareAppMessage(options)函數(shù)設置該頁面的轉發(fā)信息。
options參數(shù)說明:
from:轉發(fā)事件來源。button:頁面內轉發(fā)按鈕;menu:右上角轉發(fā)菜單;
target:如果 from 值是 button,則
target 是觸發(fā)這次轉發(fā)事件的 button,否則為 undefined
自定義字段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | return { title: '轉發(fā)', //
轉發(fā)標題(默認:當前小程序名稱) path: '/pages/index/index',
// 轉發(fā)路徑(當前頁面 path ),必須是以 / 開頭的完整路徑 success(e) { // shareAppMessage: ok, // shareTickets 數(shù)組,每一項是一個 shareTicket ,對應一個轉發(fā)對象 // 需要在頁面onLoad()事件中實現(xiàn)接口 wx.showShareMenu({ // 要求小程序返回分享目標信息 withShareTicket:
true }); }, fail(e) { // shareAppMessage:fail cancel // shareAppMessage:fail(detail message) }, complete() { }} |
wx.showShareMenu(OBJECT) 帶 shareTicket 的轉發(fā)。
1.在SDK中與真機調試的過程中,都需要設withShareTicket為true,
2.否則在真機的調試過程中,即便選擇了轉發(fā)的群聊,也不會返回shareTicket
1 2 3 4 5 6 7 8 9 | onLoad(e)
{ wx.showShareMenu({ withShareTicket: true }) }, onShow(e) { wx.showShareMenu({ withShareTicket: true }) }, |
wx.getShareInfo(OBJECT)獲取轉發(fā)詳細信息
1 2 3 4 5 6 7 8 9 10 11 12 13 | if (res.shareTickets) { // 獲取轉發(fā)詳細信息 wx.getShareInfo({ shareTicket: res.shareTickets[0], success(res) { res.errMsg; //
錯誤信息 res.encryptedData; // 解密后為一個
JSON 結構(openGId 群對當前小程序的唯一 ID) res.iv; //
加密算法的初始向量 }, fail() {}, complete() {} });} |
小程序在群里被打開后,獲取情景值和shareTicket
1 2 3 4 5 6 7 8 | //app.jsApp({ onLaunch: function (ops) { if (ops.scene == 1044)
{ console.log(ops.shareTicket) } }}) |
Bug & Tip
1.頁面之間的參數(shù)傳遞,需要在onLoad()函數(shù)中接收,onShow()函數(shù)中無法接收。
2.獲取群聊中被打開的小程序的shareTicket,需要在App.onLaunch() 或 App.onShow()。
頁面的生命周期函數(shù)中是獲取不到的。
3.將轉發(fā)內容至單個用戶時,是無法獲取到shareTicket 。
