扫一扫浏览

小程序•小故事(10)——群聊能力

未结贴
0 1807
江南坦克未认证 2018-06-02 08:54:54
收藏

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

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

基于此,我们开放了群聊 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

群名称组件

<open-data> : [查看文档]

第九期回顾:小程序•小故事(9)——音视频组件

第八期回顾:小程序•小故事(8)——自定义组件

第七期回顾:小程序•小故事(7)——小程序音频能力介绍

第六期回顾:小程序•小故事(6)——微信登录能力优化

第五期回顾:小程序•小故事(5)——小程序插件

第四期回顾:小程序•小故事(4)——获取用户信息

第三期回顾:小程序•小故事(3)——更新机制

第二期回顾:小程序•小故事(2)——代码片段

第一期回顾:小程序•小故事(1)——分包加载



如果大家有想了解的小程序相关能力的故事,欢迎在评论区留言,我们后续会考虑将这些能力背后的故事分期分享给大家。

最近热帖 HOT TOPIC
父元素flex之后,子元素高度自适应问题 4021
thinkphp5隐藏默认模块的一些问题 3388
一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)php实现 3077
关于thinkphp5.0.x getshell漏洞的说明 3072
教你如果处理高并发数据不同步的问题php篇 2968
【全套视频】thinkphp5视频教程 2833
移动web资源整理,你值得收藏的干货 2814
tpframe新建主题 2813
TPFrame框架robot模块重磅来袭,内附2.1版本 2728
PHP如何判断字符串是否为json格式 2715
月度热议HOT COMMENTS
tpframe 后续版本你希望有的功能是什么(分享贴) 12
关于tpframe的一点话题 6
cms插件在分类排序的时候JSON错误 6
基于tpframe v3.x 的微信公众号插件已批量上线 5
tpframe插件tcms插件v2.2已发布上线,欢迎下载使用 5
新增的管理员没有权限操作CMS模块。 3
api接口文档插件easydoc的基本用法,快速搞定接口文档 3
thinkphp5自动完成操作,两次运行的详解 2
thinkphp5隐藏默认模块的一些问题 2
tpframe-curd操作之添加数据 2