小程序模板網(wǎng)

微信小程序轉(zhuǎn)發(fā)功能

發(fā)布時間:2018-05-08 14:28 所屬欄目:小程序開發(fā)教程

微信小程序轉(zhuǎn)發(fā)涉及以下4個方法:

1、Page.onShareAppMessage({}) 
設置右上角“轉(zhuǎn)發(fā)”配置,及轉(zhuǎn)發(fā)后回調(diào)函數(shù)返回 shareTicket 票據(jù) 
2、wx.showSahreMenu() 
用戶點擊右上角后,顯示“轉(zhuǎn)發(fā)”按鈕 
3、wx.hideShareMenu() 
隱藏轉(zhuǎn)發(fā)按鈕,無視 Page.onShareAppMessage({}) 
4、wx.getShareInfo({}) 
根據(jù) shareTicket 獲取已加密的群信息

把轉(zhuǎn)發(fā)流程切分:轉(zhuǎn)發(fā)前配置->轉(zhuǎn)發(fā)時->轉(zhuǎn)發(fā)到群組后打開->二次轉(zhuǎn)發(fā) 
轉(zhuǎn)發(fā)流程圖:

這里寫圖片描述

U1: 用戶 
T1,T2,T3:表示轉(zhuǎn)發(fā)票據(jù),即 shareTicket 
G1,G2,G3:群組

1.轉(zhuǎn)發(fā)前配置 
在頁面 onLoad 方法添加

 

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

withShareTicket 為 true 時,表示允許轉(zhuǎn)發(fā)時是否攜帶 shareTicket。  shareTicket 是獲取轉(zhuǎn)發(fā)目標群信息的票據(jù),只有擁有 shareTicket 才能拿到群信息,用戶每次轉(zhuǎn)發(fā)都會生成對應唯一的shareTicket 。

shareTicket 有兩個用途:

用戶主動轉(zhuǎn)發(fā)后,獲取轉(zhuǎn)發(fā)到目標群群信息,對應上圖UI。  用戶在群組中打開小程序,獲取群組信息,對應上圖 G1 群組中的用戶。  2.轉(zhuǎn)發(fā)時獲取群信息  當某個小程序被轉(zhuǎn)發(fā)到群組后,開發(fā)者想獲取到轉(zhuǎn)發(fā)目標群組信息,將用戶和群組做某種綁定關系(openId + openGid)。

 

  1. 1 onShareAppMessage: function () {
  2. 2 return {
  3. 3 title: '自定義轉(zhuǎn)發(fā)標題',
  4. 4 path: '/page/user?id=123',
  5. 5 success: function(res) {
  6. 6 var shareTickets = res.shareTickets;
  7. 7 if (shareTickets.length == 0) {
  8. 8 return false;
  9. 9 }
  10. 10 wx.getShareInfo({
  11. 11 shareTicket: shareTickets[0],
  12. 12 success: function(res){
  13. 13 var encryptedData = res.encryptedData;
  14. 14 var iv = res.iv;
  15. 15 }
  16. 16 })
  17. 17 },
  18. 18 fail: function(res) {
  19. 19 // 轉(zhuǎn)發(fā)失敗
  20. 20 }
  21. 21 }
  22. 22 }

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),基于群組關系,小程序有更多的應用場景,例如:王者榮耀群排行,摩拜單車。

 

  1. 1 Page({
  2. 2 onLoad: function(opt) {
  3. 3 /** 判斷場景值,1044 為轉(zhuǎn)發(fā)場景,包含shareTicket 參數(shù) */
  4. 4 if (opt.scene == 1044) {
  5. 5 wx.getShareInfo({
  6. 6 shareTicket: opt.shareTicket,
  7. 7 success: function(res){
  8. 8 var encryptedData = res.encryptedData;
  9. 9 var iv = res.iv;
  10. 10 }
  11. 11 })
  12. 12 }
  13. 13 }
  14. 14 })

在群組中打開小程序,頁面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ù)結構方法(樹、馬爾科夫鏈)處理發(fā)現(xiàn)群組與群組,群組與成員之間微妙關系。

如開頭那張圖,我們很容易看出轉(zhuǎn)發(fā)鏈和轉(zhuǎn)發(fā)樹。  轉(zhuǎn)發(fā)鏈:U1 > G1 > G2  轉(zhuǎn)發(fā)樹:U1 > G1 > G2 & G3



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://22321a.com/wxmini/doc/course/24349.html 復制鏈接 如需定制請聯(lián)系易優(yōu)客服咨詢:800182392 點擊咨詢
QQ在線咨詢