小程序如何显示群名称?

今年 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 获取到当前客户端的基础库版本,作一下低版本兼容。

相关文章
相关标签/搜索