微信小程序區分分享到羣和好友

需求

最近在作的微信小程序中,有這樣的需求,須要判斷用戶是分享到羣仍是好友。

方法

微信小程序官方提供了 onShareAppMessage(options) 函數,能夠設置頁面中的轉發信息,固然,裏面也有轉發成功後的回調,咱們下面也是會用到這個轉發成功的回調函數。javascript

在頁面的 Page 中定義這個函數,參考代碼:html

Page({
  onShareAppMessage: function (res) {
    if (res.from === 'button') {
      // 來自頁面內轉發按鈕
      console.log(res.target)
    }
    return {
      title: '自定義轉發標題',
      path: '/page/user?id=123',
      success: function(res) {
        // 轉發成功
        // 若是這裏有 shareTickets,則說明是分享到羣的
        console.log(res.shareTickets)
      },
      fail: function(res) {
        // 轉發失敗
      }
    }
  }
})

若是 success 回調裏有返回 shareTickets,則說明是分享到羣的,若是沒有則是分享到好友。java

坑來了,你若是沒有設置 wx.showShareMenu,是沒有任何 shareTickets 返回的。小程序

尼瑪那時候試了老半天,結果就是沒有唉,必定要注意啊!

並且這個必定要在頁面進來的最開始就執行,放在 onLaunch 或者 onLoad 生命週期函數裏微信小程序

onLaunch: function (){
  wx.showShareMenu({
    withShareTicket: true
  })
}

這樣,當你分享到羣的時候,就會有 shareTickets 了。api

咱們注意到 res.shareTickets 是個 Array ,由於分享給好友和羣的時候,能夠多選,最多選9項。

圖片描述

拿到 shareTickets 以後,能夠調用 wx.getShareInfo ,獲取解密 gid 會用到的向量和加密值,傳給服務端進行解密(小程序中全部的解密操做,都放在服務端進行)。微信

wx.getShareInfo({
  shareTicket: shareTicket,
    complete(res){
      console.log(res)
    }
})

參考

微信小程序文檔-轉發函數

相關文章
相關標籤/搜索