|
微信小程序轉(zhuǎn)發(fā)涉及以下4個方法:
1、Page.onShareAppMessage({})
把轉(zhuǎn)發(fā)流程切分:轉(zhuǎn)發(fā)前配置->轉(zhuǎn)發(fā)時->轉(zhuǎn)發(fā)到群組后打開->二次轉(zhuǎn)發(fā)
U1: 用戶
1.轉(zhuǎn)發(fā)前配置
wx.showShareMenu({
withShareTicket: true
})
withShareTicket 為 true 時,表示允許轉(zhuǎn)發(fā)時是否攜帶 shareTicket。 shareTicket 是獲取轉(zhuǎn)發(fā)目標群信息的票據(jù),只有擁有 shareTicket 才能拿到群信息,用戶每次轉(zhuǎn)發(fā)都會生成對應唯一的shareTicket 。 shareTicket 有兩個用途:
2.轉(zhuǎn)發(fā)時獲取群信息 當某個小程序被轉(zhuǎn)發(fā)到群組后,開發(fā)者想獲取到轉(zhuǎn)發(fā)目標群組信息,將用戶和群組做某種綁定關(guān)系(openId + openGid)。
onShareAppMessage: function () {
return {
title: '自定義轉(zhuǎn)發(fā)標題',
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) {
// 轉(zhuǎn)發(fā)失敗
}
}
}
shareTickets 是一個數(shù)組,每一項是一個 shareTicket ,對應一個轉(zhuǎn)發(fā)對象,轉(zhuǎn)發(fā)給用戶不會包含shareTicket。 拿到 shareTicket 之后,使用 wx.getShareInfo({}) 方法傳入 shareTicket 參數(shù),wx.getShareInfo({}) 里回調(diào)函數(shù)中包含 已加密的群信息和 向量IV。 3.轉(zhuǎn)發(fā)到群組后打開 用戶將小程序轉(zhuǎn)發(fā)到微信群組后,群成員打開小程序,通過 shareTicket,開發(fā)者就能將群成員和群組綁定起來(openId + openGid),基于群組關(guān)系,小程序有更多的應用場景,例如:王者榮耀群排行,摩拜單車。
Page({
onLoad: function(opt) {
/** 判斷場景值,1044 為轉(zhuǎn)發(fā)場景,包含shareTicket 參數(shù) */
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 參數(shù)。 4.二次轉(zhuǎn)發(fā) 二次轉(zhuǎn)發(fā)重復前3個步驟,沒什么可說的,但是有一個方向值得探討,可否把小程序轉(zhuǎn)發(fā)路徑比作轉(zhuǎn)發(fā)鏈,進而生成轉(zhuǎn)發(fā)樹,用數(shù)據(jù)結(jié)構(gòu)方法(樹、馬爾科夫鏈)處理發(fā)現(xiàn)群組與群組,群組與成員之間微妙關(guān)系。 如開頭那張圖,我們很容易看出轉(zhuǎn)發(fā)鏈和轉(zhuǎn)發(fā)樹。 |