群用户通过微信小程序可以更好地协作了
今天,小程序向开发者开放了群ID的接口能力。简单地说,就是当你把小程序分享在群聊中,被点击后开发者可获取群ID和群名称,也方便更好地针对群场景提供个性化服务。不同的群有各自的群ID,那么这个新能力开发者该怎么使用?
群用户间可以更好地协作
大家都知道,小程序可以方便地在群聊中分享,但开发者难以识别不同用户的点击路径。
现在,通过最新的接口能力,开发者可以通过群ID判断用户是否来自同一个微信群,同一个群内的用户之间可以更好地使用小程序进行协作,例如共同编辑文档、协同合作、共同点餐等等。
提供更个性化的服务
通过不同的群ID,开发者可以针对各个微信群提供更个性化的服务和内容,满足不同用户的多样需求。
onShareAppMessage
在 Page 中定义 onShareAppMessage 函数,设置该页面的分享信息。
- 只有定义了此事件处理函数,右上角菜单才会显示 “分享” 按钮
- 用户点击分享按钮的时候会调用
- 此事件需要 return 一个 Object,用于自定义分享内容
自定义分享字段
| 字段 | 说明 | 默认值 | 最低版本 | 
|---|---|---|---|
| title | 分享标题 | 当前小程序名称 | |
| path | 分享路径 | 当前页面 path ,必须是以 / 开头的完整路径 | |
| success | 分享成功的回调函数 | 1.1.0 | |
| fail | 分享失败的回调函数 | 1.1.0 | |
| complete | 分享结束的回调函数(分享成功、失败都会执行 | 1.1.0 | 
回调结果:
| 回调类型 | errMsg | 说明 | 
|---|---|---|
| success | shareAppMessage:ok | 分享成功 | 
| fail | shareAppMessage:fail cancel | 用户取消分享 | 
| fail | shareAppMessage:fail (detail message) | 分享失败,其中 detail message 为详细失败信息 | 
success回调参数说明:
| 参数 | 类型 | 说明 | 最低版本 | 
|---|---|---|---|
| shareTickets | Array String | shareTicket 数组,每一项是一个 shareTicket ,对应一个分享对象 | 1.1.0 | 
示例代码:
Page({
  onShareAppMessage: function () {
    return {
      title: ‘自定义分享标题‘,
      path: ‘/page/user?id=123‘,
      success: function(res) {
        // 分享成功
      },
      fail: function(res) {
        // 分享失败
      }
    }
  }
})
wx.showShareMenu(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
显示当前页面的分享按钮
OBJECT参数说明:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| withShareTicket | Boolean | 否 | 是否使用带 shareTicket 的分享详情 | 
| success | Function | 否 | 接口调用成功的回调函数 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
示例代码:
wx.showShareMenu({
  withShareTicket: true
})
wx.hideShareMenu(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
隐藏分享按钮
OBJECT参数说明:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| success | Function | 否 | 接口调用成功的回调函数 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
示例代码:
wx.hideShareMenu()
wx.getShareInfo(OBJECT)
基础库 1.1.0 开始支持,低版本需做兼容处理
获取分享详细信息
OBJECT参数说明:
| 参数 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| shareTicket | String | 是 | shareTicket | 
| success | Function | 否 | 接口调用成功的回调函数 | 
| fail | Function | 否 | 接口调用失败的回调函数 | 
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | 
CALLBACK 参数说明:
| 参数 | 类型 | 说明 | 
|---|---|---|
| errMsg | String | 错误信息 | 
| roomTopic | String | 群名称 | 
| rawData | String | 不包括敏感信息的原始数据字符串,用于计算签名。 | 
| signature | String | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验分享信息,参考文档signature。 | 
| encryptedData | String | 包括敏感数据在内的完整分享信息的加密数据,详细见加密数据解密算法 | 
| iv | String | 加密算法的初始向量,详细见加密数据解密算法 | 
encryptedData 解密后为一个 JSON 结构,包含字段如下:
| 字段 | 说明 | 
|---|---|
| openGId | 群对当前小程序的唯一 ID | 
| roomTopic | 群名称 | 
获取更多分享信息
通常开发者希望分享出去的小程序被二次打开的时候能够获取到一些信息,例如群聊名字或者是群的标识。现在通过调用 wx.showShareMenu 并且设置 withShareTicket 为 true ,当用户将小程序分享到任一群聊之后,可以获取到此次分享的 shareTicket,此分享卡片在群聊中被其他用户打开时,可以在 App.onLaunch() 获取到另一个shareTicket。这两步获取到的 shareTicket 均可通过 wx.getShareInfo() 接口可以获取到相同的分享信息。
Bug & Tip
- tip: 分享图片不能自定义;会取当前页面,从顶部开始,高度为 80% 屏幕宽度的图像作为分享图片。
- tip: 分享的调试支持请查看 普通分享的调试支持 和 带 shareTicket 的分享
- tip: 只有分享到群聊中打开才可以获取到- shareTickets返回值,单聊没有- shareTickets
- tip:- shareTicket仅在当前小程序生命周期内有效