阅读前建议先通读一下微信官方文章,如下
https://developers.weixin.qq.com/miniprogram/dev/api/notice.html
注意:
- 需要用户先在小程序内存在交互行为(如表单提交获取formId
,支付行为获取prepay_id
)
- 需要模板ID
- 需要微信6.5.2
版本及以上版本才支持
小程序的模板消息和app的推送通知是不一样的:
- 小程序需要先在小程序内通过交互行为,如表单提交获取
formId
app
推送通知不需要这个条件
所以小程序在触发时可以先把模板的内容保存到后台服务器上(时间期限是7天
),在合适的时机再发送到指定用户。
参数处理
下面是发送模板消息所需要的参数:
一、touser
用户的openid
,在微信登录的时候获取,微信2018.05.15
发布了新版本,之前的是使用wx.getUserInfo(OBJECT)
来获取用户信息,没有授权会弹出授权框让用户授权,已经授权的可以直接获取到用户信息;但是现在不行了,未授权直接使用的不会弹出授权框,所以需要用户手动触发授权获取用户信息,使用button
控件让用户主动触发授权弹窗,<button open-type="getUserInfo"></button>
;
另外获取到的openid
属于敏感数据,还需要进行解密才可以获取到openid
,unionid
等;需要encryptedData
iv
code
这三者解密;
ps:code
登录凭证需要调用wx.login(OBJECT)
才可以获取到
微信官方链接:
https://developers.weixin.qq.com/miniprogram/dev/api/open.html#wxgetuserinfoobject
二、template_id
模板id,在微信小程序后台获取
三、page
用户点击模板消息的调转页面,可以是小程序的任意一个页面,可以带参数,就像平时调转页面的时候url
一样就可以了,例子:
'/pages/newHome/newHome' + '?childId=' + this.data.selectedChildInfo.childId
四、formId
使用form
组件并且report-submit
设置为true
,一般使用button
还需要设置form-type
;
补充:button
的form-type
属性,用于 <form/>
组件,点击分别会触发 <form/>
组件的 submit/reset
事件
例子:
<form bindsubmit="nextStep" report-submit="true">
<!-- 提交审核 -->
<view class="weui-btn-area bottom-button">
<button class="weui-btn common-button-with-blue-bg-color-and-white-color" loading="{{isLoading}}" form-type='submit'>{{nextButtonText}}</button>
</view>
</form>
注意
formId
真机调试才可以获取,模拟器获取到的是the formId is a mock one
五、data
模板的内容,根据小程序后台的关键字填写就好了
六、color
废弃
七、emphasis_keyword
需要放大的关键字
参考data
,如keyword1.DATA
例子
{
"touser": "o4HL40J",
"template_id": "iq4VwfAPxk9bv",
"page": "/pages/newHome/newHome?childId=00000",
"form_id": "the formId is a mock one",
"data": {
"keyword1": {
"value": "申请已经通过了,快去看看吧。",
"color": "#173177"
},
"keyword2": {
"value": "西藏",
"color": "#173177"
},
"keyword3": {
"value": "中三班",
"color": "#173177"
},
"keyword4": {
"value": "马三",
"color": "#173177"
}
}
}