微信小程序轉發微信小程序轉發

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

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

1.轉發前配置
在頁面 onLoad 方法添加java

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。markdown

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

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 參數。函數