微信邦 发表于 2018-5-19 09:15:07

小程序•小故事(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获取 openGIDwx.getShareInfo :[查看文档]
5群名称组件<open-data> : [查看文档]

第十一期回顾:小程序•小故事(11)——低功耗蓝牙能力第十期回顾:小程序•小故事(10)——群聊能力第九期回顾:小程序•小故事(9)——音视频组件第八期回顾:小程序•小故事(8)——自定义组件第七期回顾:小程序•小故事(7)——小程序音频能力介绍第六期回顾:小程序•小故事(6)——微信登录能力优化第五期回顾:小程序•小故事(5)——小程序插件第四期回顾:小程序•小故事(4)——获取用户信息第三期回顾:小程序•小故事(3)——更新机制第二期回顾:小程序•小故事(2)——代码片段第一期回顾:小程序•小故事(1)——分包加载
页: [1]
查看完整版本: 小程序•小故事(10)——群聊能力