1,先上官方文档
小程序订阅消息官方文档
2,消息类型
(1) 一次性订阅消息
用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
(2) 长期订阅消息
用户订阅一次后,开发者可长期下发多条消息。
目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放
(3) 设备订阅消息
属于长期订阅消息类型,且需要完成「设备接入」才能使用
经过微信认证的非个人主体小程序。面向智能硬件生产企业或开发者
3,主要流程
(1). https://mp.weixin.qq.com 登录小程序后台获取消息模板,没合适的模板,可申请添加新模板,审核通过后可使用。
(2). 前端调wx.requestSubscribeMessage(Object object)接口,唤起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。
当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。
wx.getSetting
3.服务端调用接口下发订阅消息
详见服务端接口 subscribeMessage.send
注意事项
1,授权弹窗需要用户点击才能拉起,比如直接在 onload 方法中是无法调起的,可以在需要拉起的地方做一个弹窗询问,引导用户点击拉起授权
2,建议直接在真机测试,开发工具是没有同时订阅二个消息的
3,只能一次订阅三个消息,永久和一次性消息是不能同时订阅的
扩展(封装)
/**
* 订阅消息
* @param { Array } [tmplIds]
* @returns { Promise<Object> }
*/
export const subscribeMessage = (tmplIds = []) => {
console.log('tmplIds',tmplIds);
return new Promise((resolve, reject) => {
wx.requestSubscribeMessage({
tmplIds,
success(res) {
// 订阅成功
if (res[tmplIds[0]] === 'accept'||res[tmplIds[1]] === 'accept') {
resolve(res)
} else {
reject(res)
}
},
fail: reject
})
})
}