动态消息

从基础库 2.4.0 开始,支持转发动态消息。动态消息对比普通消息,有以下特点:

  • 消息发出去之后,开发者可以通过后台接口修改部分消息内容。
  • 消息有对应的提醒按钮,用户点击提醒按钮可以订阅提醒,开发者可以通过后台修改消息状态并推送一次提醒消息给订阅了提醒的用户

消息属性

动态消息有状态、文字内容、文字颜色。

状态

消息有两个状态,分别有其对应的文字内容和颜色。其中状态 0 可以转移到状态 0 和 1,状态 1 无法再转移。

状态文字内容颜色允许转移的状态
0"成员正在加入,当前 {member_count}/{room_limit} 人"#FA9D390, 1
1"已开始"#CCCCCC

状态参数

每个状态转移的时候可以携带参数,具体参数说明如下。

参数类型说明
member_countstring状态 0 时有效,文字内容模板中 member_count 的值
room_limitstring状态 0 时有效,文字内容模板中 room_limit 的值
pathstring状态 1 时有效,点击「进入」启动小程序时使用的路径。对于小游戏,没有页面的概念,可以用于传递查询字符串(query),如 "?foo=bar"
version_typestring状态 1 时有效,点击「进入」启动小程序时使用的版本。有效参数值为:develop(开发版),trial(体验版),release(正式版)

使用方法

一、创建 activity_id

每条动态消息可以理解为一个活动,活动发起前需要通过 updatableMessage.createActivityId 接口创建 activity_id。后续转发动态消息以及更新动态消息都需要传入这个 activity_id

活动的默认有效期是 24 小时。活动结束后,消息内容会变成统一的样式:

  • 文字内容:“已结束”
  • 文字颜色:#00ff00

二、在转发之前声明消息类型为动态消息

通过调用 wx.updateShareMenu 接口,传入 isUpdatableMessage: true,以及 templateInfoactivityId 参数。其中 activityId 从步骤一中获得。

  1. wx.updateShareMenu({
  2. withShareTicket: true,
  3. isUpdatableMessage: true,
  4. activityId: '', // 活动 ID
  5. templateInfo: {
  6. parameterList: [{
  7. name: 'member_count',
  8. value: '1'
  9. }, {
  10. name: 'room_limit',
  11. value: '3'
  12. }]
  13. }
  14. })

三、修改动态消息内容

动态消息发出去之后,可以通过 updatableMessage.setUpdatableMsg 修改消息内容。

低版本兼容

对于不支持动态消息的客户端版本,收到动态消息后会展示成普通消息