小程序如何顯示羣名稱?

今年 5 月份的時候,微信宣佈:「爲了更好的針對羣場景提供個性化服務,當用戶在羣聊中點擊小程序分享卡片時,小程序支持開發者獲取羣 ID 和羣名稱」。但隨後沒多久,發現小程序只返回了羣 ID,並無給咱們羣名。如今,終於有方法能夠顯示羣名稱啦!小程序

前言

直到如今,網上還能夠看到不少「開發者能夠獲取羣名稱」這樣的新聞。在微信剛宣佈的時候確實同時返回了羣 ID 和 羣名稱,但隨後就只能獲取到羣 ID 了。估計會有不少開發者跟我同樣被文章誤導了,還覺得是本身代碼有問題。微信

至於微信爲何這麼作,官方也做出瞭解釋:app

這就致使了,目前不少和羣關聯的小程序,一進去就要設置羣備註的尷尬現象。佈局

爲了保護用戶的隱私,同時知足開發的需求,微信須要找到一種獲取不到,但又容許展現的方法。this

如今微信找到方法了。加密

下面咱們看看如何在小程序裏面顯示羣名稱。spa

獲取羣 ID

顯示羣名的前提是,已經獲取到了該羣的羣 ID。要是你以前已經對獲取羣 ID 有所瞭解,能夠直接跳到後面看。blog

咱們經過將小程序轉發到羣裏,獲取到對應羣的羣 ID。開發

首先,須要設置顯示當前頁面的轉發按鈕,轉發後返回 ShareTicket,有了它才能去獲取羣 ID:get

wx.showShareMenu({
  withShareTicket: true 
})

在代碼裏面添加 onShareAppMessage 方法,它是用來控制轉發功能的。轉發成功後,拿到 ShareTicket,再調用 wx.getShareInfo 獲取轉發目標的信息。代碼以下:

onShareAppMessage: function () {
  var that = this
  return {
    title: "轉發標題",
    path: '頁面路徑',
    success(res) {
      wx.getShareInfo({
        shareTicket: res.shareTickets[0],
        success(res) {
          console.log(res.encryptedData)
          console.log(res.iv)
          // 後臺解密,獲取 openGId
        }
      })
    }
  }
}

和 wx.getUserInfo 同樣,微信給了咱們一段加密的數據,加密的方式也是同樣的,後臺能夠用同一段代碼進行解密。解密後的格式以下:

{
    "openGId": "xxxxxxxx",
    "watermark": {
        "appid": "xxxxxxxx",
        "timestamp": 1499841984
    }
}

openGId 就是咱們要的羣 ID 了,把它保存下來。

顯示羣名

下面咱們來到佈局文件。

小程序剛更新,多了一個新組件 open-data:

用起來很簡單,在要顯示羣名的地方,使用如下代碼:

<open-data type="groupName" open-gid="{{openGId}}" />

將 openGId 傳入,就會顯示出羣名稱了。妥妥的。

但這個東西是基礎庫 1.4.0 纔有的東西,最好仍是用 wx.getSystemInfo 獲取到當前客戶端的基礎庫版本,作一下低版本兼容。

相關文章
相關標籤/搜索