微信小程序轉發(fā)功能的實現(xiàn)
小程序轉發(fā)功能是小程序最基本的功能,有四種方法可以實現(xiàn)這一效果。
1、Page.onShareAppMessage({})
設置右上角“轉發(fā)”配置,及轉發(fā)后回調函數(shù)返回 shareTicket 票據(jù)
2、wx.showSahreMenu()
用戶點擊右上角后,顯示“轉發(fā)”按鈕
3、wx.hideShareMenu()
隱藏轉發(fā)按鈕,無視 Page.onShareAppMessage({})
4、wx.getShareInfo({})
根據(jù) shareTicket 獲取已加密的群信息
把轉發(fā)流程切分:轉發(fā)前配置->轉發(fā)時->轉發(fā)到群組后打開->二次轉發(fā)
轉發(fā)流程圖:
這里寫圖片描述
U1: 用戶
T1,T2,T3:表示轉發(fā)票據(jù),即 shareTicket
G1,G2,G3:群組
1.轉發(fā)前配置
在頁面 onLoad 方法添加
1 wx.showShareMenu({
2 withShareTicket: true
3 })
withShareTicket 為 true 時,表示允許轉發(fā)時是否攜帶 shareTicket。
shareTicket 是獲取轉發(fā)目標群信息的票據(jù),只有擁有 shareTicket 才能拿到群信息,用戶每次轉發(fā)都會生成對應唯一的shareTicket 。
shareTicket 有兩個用途:
用戶主動轉發(fā)后,獲取轉發(fā)到目標群群信息,對應上圖UI。
用戶在群組中打開小程序,獲取群組信息,對應上圖 G1 群組中的用戶。
2.轉發(fā)時獲取群信息
當某個小程序被轉發(fā)到群組后,開發(fā)者想獲取到轉發(fā)目標群組信息,將用戶和群組做某種綁定關系(openId + openGid)。
1 onShareAppMessage: function () {
2 return {
3 title: '自定義轉發(fā)標題',
4 path: '/page/user?id=123',
5 success: function(res) {
6 var shareTickets = res.shareTickets;
7 if (shareTickets.length == 0) {
8 return false;
9 }
10 wx.getShareInfo({
11 shareTicket: shareTickets[0],
12 success: function(res){
13 var encryptedData = res.encryptedData;
14 var iv = res.iv;
15 }
16 })
17 },
18 fail: function(res) {
19 // 轉發(fā)失敗
20 }
21 }
22 }
shareTickets 是一個數(shù)組,每一項是一個 shareTicket ,對應一個轉發(fā)對象,轉發(fā)給用戶不會包含shareTicket。
拿到 shareTicket 之后,使用 wx.getShareInfo({}) 方法傳入 shareTicket 參數(shù),wx.getShareInfo({}) 里回調函數(shù)中包含 已加密的群信息和 向量IV。
3.轉發(fā)到群組后打開
用戶將小程序轉發(fā)到微信群組后,群成員打開小程序,通過 shareTicket,開發(fā)者就能將群成員和群組綁定起來(openId + openGid),基于群組關系,小程序有更多的應用場景,例如:王者榮耀群排行,摩拜單車。
1 Page({
2 onLoad: function(opt) {
3 /** 判斷場景值,1044 為轉發(fā)場景,包含shareTicket 參數(shù) */
4 if (opt.scene == 1044) {
5 wx.getShareInfo({
6 shareTicket: opt.shareTicket,
7 success: function(res){
8 var encryptedData = res.encryptedData;
9 var iv = res.iv;
10 }
11 })
12 }
13 }
14 })
在群組中打開小程序,頁面onLoad 或 onShow 方法包含 scene 和 shareTicket,需要判斷 scene 是否為1044,如果不是則不包含 opt 中 shareTicket 參數(shù)。
4.二次轉發(fā)
二次轉發(fā)重復前3個步驟,沒什么可說的,但是有一個方向值得探討,可否把小程序轉發(fā)路徑比作轉發(fā)鏈,進而生成轉發(fā)樹,用數(shù)據(jù)結構方法(樹、馬爾科夫鏈)處理發(fā)現(xiàn)群組與群組,群組與成員之間微妙關系。
如開頭那張圖,我們很容易看出轉發(fā)鏈和轉發(fā)樹。
轉發(fā)鏈:U1 > G1 > G2
轉發(fā)樹:U1 > G1 > G2 & G3
HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。