收藏
评论

(10)群聊能力官方

我们在后台收到很多朋友的反馈,希望更好的运用小程序群聊的能力。于是我们想写写群聊的故事。


微信群是小程序在微信这个社交工具下传播的重要途径,我们经常能通过群聊看见小程序的身影。我们希望开发者在实现小程序逻辑的时候,能理解每一个群聊,可实现小程序与各个群聊紧密相关的功能。


基于此,我们开放了群聊 ID(openGID)的功能,供开发者区分标识每个群聊。对于每个群聊而言,小程序所获取到的 openGID 是不变的。但对于同一个群,不同的小程序内获得的 openGID 是不一样的。这一特性类似于标识用户身份的 openID。


拥有了群聊 ID,开发者可以把用户的操作按照群聊 ID 来聚合、沉淀信息,实现群协作功能。此外,通过 openID+openGID 的方式,还可以实现群排行的功能。


例如“群影”小程序以群聊ID聚合用户上传的图片,实现群相册的功能。




(“群影”小程序)


01

如何获取群聊ID


开发者获取 openGID 要依托于用户转发到群聊的小程序卡片,具体步骤如下:


1

设置带 shareTicket 的分享


在小程序内,开发者调用接口wx.updateShareMenu 带参数withShareTicket:true ,设置当前页面分享到群聊时能获取 openGID。而shareTicket本身就是获取 openGID 的凭证。




而 iOS/Android App 分享场景当中,微信SDK也支持把所分享的消息设置成带 shareTicket。


值得注意的是,带 shareTicket 的分享卡片会被固定在某个群聊的,也就是说分享卡片会变成不能被长按转发


2

由启动参数获取 shareTicket


当用户从某个带 shareTicket 的卡片进入小程序时,开发者可以在App.onLaunch 或者App.onShow 获取 shareTicket,而在小游戏上开发者可以通过监听 wx.onShow 或者同步调用wx.getLaunchOptionsSync 获取shareTicket。


shareTicket 实际上是小程序启动时临时生成的变量,在小程序生命周期内仅作为调用接口的凭证。生命周期结束后 shareTicket 就没有意义了。


3

通过 shareTicket 获取 openGID


开发者调 wx.getShareInfo 接口以 shareTicket 换取 openGID 的加密数据包,这是为了保证开发者服务器收到的 openGID 是可信的,开发者需要把加密数据交由后台解密,拿到真实的 openGID。数据加密机制更多请参看[数据加密相关文档]


注意事项 ▷▷


由于2018年7月5日起,新提交发布的小程序版本将无法通过用户分享获得群ID,即开发者通wx.onShareAppMessage获取群 ID 的方式将不再支持,后续仅支持通过启动参数获取群 ID。请开发者及时调整。


02

群聊名称组件


除了群聊 ID 以外,开发者还能使用群聊对应的名称。出于保护用户隐私的考虑,我们不会把真实的群聊名称暴露给开发者,而是通过 open-data 组件让开发者在小程序前端展示某个 openGID 对应的群名称。




其中 openGID 就是小程序获取到的群聊 ID。 open-data 组件只展示那些用户所在群聊ID对应的名称。如果设置了非微信提供的群聊 ID,将无法展现群聊名称。


03

群聊功能


1

分享设置

wx.updateShareMenu [查看文档]


2

小程序启动参数

App.onLaunch / App.onShow [查看文档]


3

小游戏启动参数

wx.onShow[查看文档]

getLaunchOptionsSync [查看文档]


4

获取 openGID

wx.getShareInfo [查看文档]


5

群名称组件

[查看文档]



40127浏览
最后一次编辑于  2018-08-17
知识库内容非实时更新,可能已过期、失效或不适用于当前情形,请谨慎参考
收藏
反馈

21 个评论

  • 白山的天很蓝
    白山的天很蓝
    2018-05-21

    感觉自己是个睿智。。。。一脸懵。

    2018-05-21
    赞同 9
    回复
  • 物管王软件&包租婆软件-高先生
    物管王软件&包租婆软件-高先生
    2018-06-03

    有demo吗  这种写的文档看不懂,最好有一个简单的 能运行demo  加注释 我们这些小白就好学啦

    2018-06-03
    赞同 7
    回复
  • Code Weaver
    Code Weaver
    2020-03-27

    群影挂了一年了。。

    2020-03-27
    赞同 3
    回复
  • 怀旧的文学小青年
    怀旧的文学小青年
    2018-05-23

    如何获得群成员列表信息,比如所有群成员的头像和昵称呢?

    2018-05-23
    赞同 3
    回复 1
  • 从心
    从心
    2021-03-01

    请问getShareInfo返回err code 42是什么意思呀?

    2021-03-01
    赞同 2
    回复
  • L
    L
    2018-06-06

    要是能接入加群加好友就好了...现在还得自己做IM

    2018-06-06
    赞同 2
    回复 1
    • 2018-11-23

      嗯,加好友功能希望官方接入,或者群友直接私聊,话说自己做IM是什么思路?

      2018-11-23
      回复
  • 熊旭
    熊旭
    2018-06-23

    确定updateShareMenu可以使用吗?我使用updateShareMenu完全没有反应

    2018-06-23
    赞同 1
    回复
  • 年轻的贵哥
    年轻的贵哥
    2018-06-04

    请问,有没有办法在已知群gid情况下,在小程序界面触发跳转某个群?我们的使用场景是这样的,比如一个手机维修订单是广州市天河区,我们有专门一个微信群是天河区服务商群,希望客服中心能从订单系统(已实现小程序客服管理系统),一键触发分享到指定群。没有使用企业微信的原因,是不希望各个地区服务商之间通过企业微信串联。原本系统通过微信群二维码实现,无奈不能通过接口实现群二维码更新。

    2018-06-04
    赞同 1
    回复
  • 与之偕老
    与之偕老
    2018-05-31

    不会编辑  谁教教我?

    2018-05-31
    赞同 1
    回复
  • A00: ɡǎο昕
    A00: ɡǎο昕
    2018-05-26

    ,,


    2018-05-26
    赞同 1
    回复

正在加载...

登录 后发表内容