微信小程序轉發涉及以下4個方法:
1、Page.onShareAppMessage({})
設置右上角“轉發”配置,及轉發后回調函數返回 shareTicket 票據
2、wx.showSahreMenu()
用戶點擊右上角后,顯示“轉發”按鈕
3、wx.hideShareMenu()
隱藏轉發按鈕,無視 Page.onShareAppMessage({})
4、wx.getShareInfo({})
根據 shareTicket 獲取已加密的群信息
1.轉發前配置
在頁面 onLoad 方法添加
wx.showShareMenu({ withShareTicket: true })
withShareTicket 為 true 時,表示允許轉發時是否攜帶 shareTicket。
shareTicket 是獲取轉發目標群信息的票據,只有擁有 shareTicket 才能拿到群信息,用戶每次轉發都會生成對應唯一的shareTicket 。
shareTicket 有兩個用途:
- 用戶主動轉發后,獲取轉發到目標群群信息,對應上圖UI。
- 用戶在群組中打開小程序,獲取群組信息,對應上圖 G1 群組中的用戶。
2.轉發時獲取群信息
當某個小程序被轉發到群組后,開發者想獲取到轉發目標群組信息,將用戶和群組做某種綁定關系(openId + openGid)。
onShareAppMessage: function () { return { title: '自定義轉發標題', path: '/page/user?id=123', success: function(res) { var shareTickets = res.shareTickets; if (shareTickets.length == 0) { return false; } wx.getShareInfo({ shareTicket: shareTickets[0], success: function(res){ var encryptedData = res.encryptedData; var iv = res.iv; } }) }, fail: function(res) { // 轉發失敗 } } }
shareTickets 是一個數組,每一項是一個 shareTicket ,對應一個轉發對象,轉發給用戶不會包含shareTicket。
拿到 shareTicket 之后,使用 wx.getShareInfo({}) 方法傳入 shareTicket 參數,wx.getShareInfo({}) 里回調函數中包含 已加密的群信息和 向量IV。
3.轉發到群組后打開
用戶將小程序轉發到微信群組后,群成員打開小程序,通過 shareTicket,開發者就能將群成員和群組綁定起來(openId + openGid),基於群組關系,小程序有更多的應用場景,例如:王者榮耀群排行,摩拜單車。
Page({
onLoad: function(opt) {
/** 判斷場景值,1044 為轉發場景,包含shareTicket 參數 */ if (opt.scene == 1044) { wx.getShareInfo({ shareTicket: opt.shareTicket, success: function(res){ var encryptedData = res.encryptedData; var iv = res.iv; } }) } } })
在群組中打開小程序,頁面onLoad 或 onShow 方法包含 scene 和 shareTicket,需要判斷 scene 是否為1044,如果不是則不包含 opt 中 shareTicket 參數。