微信小程序动态消息使用说明

动态消息介绍

小程序的转发功能是一个重要的小程序入口,也是小程序运营中的一个重要引流方式。用户可以使用转发功能将小程序页面转发给好友或者微信群,其他用户可以点击转发的小程序卡片快速进入小程序。虽然小程序的转发是非常好用的运营工具,但是转发出来的小程序卡片是固定不变的,难以满足一些需要显示用户参与情况的需求。比如拼团功能、抽奖功能。为了满足这些需求,小程序从基础库2.4.0开始,支持转发动态消息。动态消息对比普通消息,有以下特点:

  • 动态信息可以查看“人数变化情况”和“已开始”两种状态
  • 消息发出去之后,开发者可以通过后台接口修改部分消息内容。
  • 消息有对应的提醒按钮,用户点击提醒按钮可以订阅提醒,开发者可以通过后台修改消息状态并推送一次提醒消息给订阅了提醒的用户

动态消息的应用场景:

  • 小程序动态消息能力比较适用于互动小程序,比如说拼团功能、抽奖功能、群应用以及小游戏等。
  • 小程序动态消息的场景可以用于运营活动,主要用于分销,拉满多少人给多少奖励。但是目前只支持24小时以内的分享的小程序卡片。

动态消息使用说明

获取后台接口调用凭据:access_token

发送动态消息时需要调用updatableMessage.createActivityId接口创建一个活动,调用updatableMessage.createActivityId接口时需要传入:access_token。
开发者调用auth.getAccessToken接口来获取access_token。auth.getAccessToken接口的请求地址为:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

其中:

  • appid:小程序AppID,可在【微信公众平台】-【设置】-【开发设置】页中获得。
  • secret:小程序证密钥,获取方式同 appid。

调用auth.getAccessToken接口来获取access_token的代码如下:

type WxApiTokenReturn struct {
   ErrCode int64  `json:"errcode"`
   ErrMsg  string `json:"errmsg"`
   AccessToken string `json:"access_token"`
   ExpiresIn   int64  `json:"expires_in"`
}
func GetWxTokenFromWx(appid string, secret string) (string, error) {
   wx_api_url := "https://api.weixin.qq.com/cgi-bin/token"
   wx_api_url = fmt.Sprintf("%s?grant_type=client_credential&appid=%s&secret=%s", wx_api_url, appid, secret)
   resp, err := http.Get(wx_api_url)
   if err != nil {
      return "", err
   }
   defer resp.Body.Close()
   ret_user, err := ioutil.ReadAll(resp.Body)
   if err != nil {
      return "", err
   }
   var ent WxApiTokenReturn
   if err := json.Unmarshal(ret_user, &ent); err != nil {
      return "", err
   }
   return ent.AccessToken, nil
}

创建activity_id

每条动态消息可以理解为一个活动,活动发起前需要通过updatableMessage.createActivityId接口创建activity_id。后续转发动态消息以及更新动态消息都需要传入这个activity_id。
活动的默认有效期是24小时。updatableMessage.createActivityId接口的请求地址为:

https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create?access_token=ACCESS_TOKEN&openid=openid

其中:

  • access_token:调用auth.getAccessToken接口返回的后台接口调用凭据
  • openid:分享者的openid
    调用updatableMessage.createActivityId接口创建activity_id的代码如下:
type CreateActivityRet struct {
	WxApiRet
	//动态消息的 ID
	ActivityId 		string 		`json:"activity_id"`
	//activity_id 的过期时间戳。默认24小时后过期。
	ExpirationTime  int64     	`json:"expiration_time"`
}
func CreateActivity(access_token string, userid string, is_unionid bool) (CreateActivityRet, error) {
	wx_addr := "https://api.weixin.qq.com/cgi-bin/message/wxopen/activityid/create"
	wx_addr += "?access_token=" +access_token
	if is_unionid {
		wx_addr += "&unionid=" + userid
	} else {
		wx_addr += "&openid=" + userid
	}
	var ret CreateActivityRet
	res, err := WxApiGet(wx_addr)
	if err != nil {
		return ret, err
	}
	err = json.Unmarshal(res, &ret)
	if err != nil {
		return ret, err
	}
	return ret, nil
}

声明消息类型为动态消息

通过调用wx.updateShareMenu 接口,传入isUpdatableMessage: true,以及 templateInfo、activityId 参数。

wx.updateShareMenu({
  withShareTicket: true,
  isUpdatableMessage: true,
  activityId: '调用接口用updatableMessage.createActivityId接口创建的activity_id', 
  targetState: 0,
  templateInfo: {
    parameterList: [{
      name: 'member_count',
      value: '1'
    }, {
      name: 'room_limit',
      value: '3'
    }]
  }
})

说明:

  • 动态消息有两个状态: 0 和 1,
    0表示未开始状态,小程序卡片显示:“成员正在加入,当前 {member_count}/{room_limit} 人”,
    1表示“已开始”状态,
    状态 0 可以转移到状态 0 和 1,状态 1 无法再转移。
  • targetState: 0时templateInfo的参数如下:
    member_count: 文字内容模板中 member_count 的值。
    room_limit:文字内容模板中 room_limit 的值。
    需要注意的是,这里的数值为字符格式,不能是整数格式

实现onShareAppMessage

在页面的js文件中定义了onShareAppMessage 函数时,表示页面可以转发,小程序右上角的菜单中会有转发按钮:

 onShareAppMessage: function () {
    return {
        title: '分享标题',
        desc: '分享页面的内容',
        path: '/pages/share_recv?code=123' 
    }
  }

其中:

  • title:转发标题,默认是小程序的名称。
  • path:小程序页面的路径,默认是当前页面,必须是以‘/'开头的完整路径。
  • imageUrl:自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径,支持PNG及JPG,不传入imageUrl则使用默认截图。

修改动态消息内容

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

updatableMessage.setUpdatableMsg接口的请求地址:

https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send?access_token=ACCESS_TOKEN

updatableMessage.setUpdatableMsg接口的请求参数

  • access_token: 后台接口调用凭证(通过auth.getAccessToken接口获取)
  • activity_id :动态消息的 ID(通过updatableMessage.createActivityId接口获取)
  • target_stat:动态消息修改后的状态(0或1)
  • template_info:动态消息对应的模板信息

template_info的结构

  • member_count:target_state = 0 时必填,对应文字内容模板中 member_count 的值
  • room_limit:target_state = 0 时必填,对应文字内容模板中 room_limit 的值
  • path:target_state = 1 时必填,点击「进入」启动小程序时使用的路径。
  • version_type:target_state = 1 时必填,点击「进入」启动小程序时使用的版本。有效参数值为:develop(开发版),trial(体验版),release(正式版)

updatableMessage.setUpdatableMsg接口的调用代码:

type TemplValue struct {
	Name 			string 		`json:"name"`
	Value 			string 		`json:"value"`
}
type TemplInfo struct {
	//模板中需要修改的参数
	Items		[]TemplValue	`json:"parameter_list"`
}
type UpdateActivityReq struct {
	//动态消息的 ID
	ActivityId 		string 		`json:"activity_id"`
	//动态消息修改后的状态: 0 未开始 1已开始
	TargetState 	int  		`json:"target_state"`
	//动态消息对应的模板信息
	TemplInfo   	TemplInfo	`json:"template_info"`
}
func UpdateActivity(access_token string, param UpdateActivityReq) error {
	wx_addr := "https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send"
	wx_addr += "?access_token=" +access_token
	var ret WxApiRet
	res, err := WxApiPostStruct(wx_addr, param)
	if err != nil {
		return err
	}
	err = json.Unmarshal(res, &ret)
	if err != nil {
		return err
	}
	if ret.ErrCode == 0 {
		return nil
	} else {
		return errors.New(ret.ErrMsg)
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信小程序使用说明书模板可以按照以下格式进行编写: [标题] 微信小程序使用说明书 [目录] 1. 简介 2. 下载与安装 3. 登录与注册 4. 功能介绍 4.1 主界面 4.2 搜索功能 4.3 用户中心 5. 常见问题解答 6. 联系我们 [1. 简介] 在这一部分,可以对微信小程序进行简单介绍,包括它的作用、适用范围以及特点等。 [2. 下载与安装] 在这一部分,可以提供微信小程序的下载方式和安装步骤,可以包括扫描二维码、搜索小程序名称、从应用商店下载等。 [3. 登录与注册] 在这一部分,可以介绍如何进行微信小程序的登录和注册操作,包括使用微信账号登录、手机号登录、第三方登录等。 [4. 功能介绍] 在这一部分,可以详细介绍微信小程序的各项功能,可以按照模块进行划分,并逐一介绍每个功能的使用方法和操作步骤。 [4.1 主界面] 在这一部分,可以介绍微信小程序的主界面布局和各个模块的功能入口,让用户了解如何快速找到需要的功能。 [4.2 搜索功能] 在这一部分,可以介绍微信小程序的搜索功能,包括关键词搜索、筛选和排序等操作方法,让用户能够快速找到相关内容。 [4.3 用户中心] 在这一部分,可以介绍微信小程序的用户中心功能,包括个人信息管理、订单管理、收藏夹等模块的使用方法。 [5. 常见问题解答] 在这一部分,可以列举一些用户常见的问题,并给出解答,帮助用户快速解决问题。 [6. 联系我们] 在这一部分,可以提供微信小程序开发方或运营方的联系方式,例如客服电话、邮箱等,方便用户反馈问题或咨询。 以上是一个简单的微信小程序使用说明书模板,你可以根据实际情况进行修改和补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go lang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值