微信小程序轉發功能

微信小程序轉發涉及如下4個方法:小程序

一、Page.onShareAppMessage({}) 
設置右上角「轉發」配置,及轉發後回調函數返回 shareTicket 票據 
二、wx.showSahreMenu() 
用戶點擊右上角後,顯示「轉發」按鈕 
三、wx.hideShareMenu() 
隱藏轉發按鈕,無視 Page.onShareAppMessage({}) 
四、wx.getShareInfo({}) 
根據 shareTicket 獲取已加密的羣信息微信小程序

把轉發流程切分:轉發前配置->轉發時->轉發到羣組後打開->二次轉發 
轉發流程圖:數組

這裏寫圖片描述

U1: 用戶 
T1,T2,T3:表示轉發票據,即 shareTicket 
G1,G2,G3:羣組微信

1.轉發前配置 
在頁面 onLoad 方法添加數據結構

1 wx.showShareMenu({
2     withShareTicket: true
3 })

 

withShareTicket 爲 true 時,表示容許轉發時是否攜帶 shareTicket。 
shareTicket 是獲取轉發目標羣信息的票據,只有擁有 shareTicket 才能拿到羣信息,用戶每次轉發都會生成對應惟一的shareTicket 。ide

shareTicket 有兩個用途:函數

  • 用戶主動轉發後,獲取轉發到目標羣羣信息,對應上圖UI。
  • 用戶在羣組中打開小程序,獲取羣組信息,對應上圖 G1 羣組中的用戶。

2.轉發時獲取羣信息 
當某個小程序被轉發到羣組後,開發者想獲取到轉發目標羣組信息,將用戶和羣組作某種綁定關係(openId + openGid)。加密

 1 onShareAppMessage: function () {
 2     return {
 3       title: '自定義轉發標題',
 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         // 轉發失敗
20       }
21     }
22   }

 

 

shareTickets 是一個數組,每一項是一個 shareTicket ,對應一個轉發對象,轉發給用戶不會包含shareTicket。spa

拿到 shareTicket 以後,使用 wx.getShareInfo({}) 方法傳入 shareTicket 參數,wx.getShareInfo({}) 裏回調函數中包含 已加密的羣信息和 向量IV。code

3.轉發到羣組後打開 
用戶將小程序轉發到微信羣組後,羣成員打開小程序,經過 shareTicket,開發者就能將羣成員和羣組綁定起來(openId + openGid),基於羣組關係,小程序有更多的應用場景,例如:王者榮耀羣排行,摩拜單車。

 1 Page({
 2     onLoad: function(opt) {
 3         /** 判斷場景值,1044 爲轉發場景,包含shareTicket 參數 */
 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 參數。

4.二次轉發 
二次轉發重複前3個步驟,沒什麼可說的,可是有一個方向值得探討,能否把小程序轉發路徑比做轉發鏈,進而生成轉發樹,用數據結構方法(樹、馬爾科夫鏈)處理髮現羣組與羣組,羣組與成員之間微妙關係。

如開頭那張圖,咱們很容易看出轉發鏈和轉發樹。 轉發鏈:U1 > G1 > G2 轉發樹:U1 > G1 > G2 & G3

相關文章
相關標籤/搜索