今年 5 月份的時候,微信宣佈:「爲了更好的針對羣場景提供個性化服務,當用戶在羣聊中點擊小程序分享卡片時,小程序支持開發者獲取羣 ID 和羣名稱」。但隨後沒多久,發現小程序只返回了羣 ID,並無給咱們羣名。如今,終於有方法能夠顯示羣名稱啦!小程序
直到如今,網上還能夠看到不少「開發者能夠獲取羣名稱」這樣的新聞。在微信剛宣佈的時候確實同時返回了羣 ID 和 羣名稱,但隨後就只能獲取到羣 ID 了。估計會有不少開發者跟我同樣被文章誤導了,還覺得是本身代碼有問題。微信
至於微信爲何這麼作,官方也做出瞭解釋:app
這就致使了,目前不少和羣關聯的小程序,一進去就要設置羣備註的尷尬現象。佈局
爲了保護用戶的隱私,同時知足開發的需求,微信須要找到一種獲取不到,但又容許展現的方法。this
如今微信找到方法了。加密
下面咱們看看如何在小程序裏面顯示羣名稱。spa
顯示羣名的前提是,已經獲取到了該羣的羣 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 獲取到當前客戶端的基礎庫版本,作一下低版本兼容。