这是一份小程序消息订阅快速开发指引,其中演示了如何快速上手消息订阅的订阅、推送、支付订阅功能。
根据官方指南,小程序订阅消息功能接入一共分为三个步骤。
第一步:获取模板 ID
在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
获取模板ID第二步:获取下发权限
const templateId = 'FQAiSMdR5xibmnWL7zzIK26Px7vnHFY-40Oemx2rbOQ'; // 订阅消息模版id
wx.requestSubscribeMessage({
tmplIds: [templateId],
success(res) {
if (res[templateId] == 'accept') {
//用户同意了订阅,允许订阅消息
wx.showToast({
title: '订阅成功'
})
} else {
//用户拒绝了订阅,禁用订阅消息
wx.showToast({
title: '订阅失败'
})
}
},
fail(res) {
console.log(res)
},
complete(res) {
console.log(res)
}
})
详见小程序端消息订阅接口 wx.requestSubscribeMessage
第三步:调用接口下发订阅消息
下面演示 HTTPS 调用,使用接口模拟服务端推送订阅消息。
Step 1:使用appid和secret生成access_token,使用Get请求:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx,返回结果如下:
access_tokenStep 2:使用上面获取到的access_token,发起Post请求测试推送:https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=(access_token),请求和返回结果如下:
推送订阅消息参数订阅推送消息报错43101,表示该小程序用户未允许接收订阅消息,若订阅消息成功则返回结果如下:
推送订阅消息成功返回结果Step 3:打开微信,在服务通知中查看小程序订阅消息:
接收到的订阅消息
详见服务端消息发送接口 subscribeMessage.send
小结:
1、调用订阅消息需在tab绑定事件(或支付)中调用,否则不允许调用;
不允许调用订阅消息方法
2、用户点击允许但未勾选不再提醒,则只能推送一次性提醒,以后需要推送则需要再次发起申请订阅流程。
小程序订阅消息申请对话框.png3、发起过一次订阅申请之后用户在设置中不允许通知,则无法弹出申请对话框:
图片.png
4、发起一次订阅消息只允许申请1-3个模板,超过3个将报错:
同时申请超过3条订阅消息模板报错.png
5、用户点击一次允许订阅消息后,发送一条订阅消息,即消费一条消息后,不能再发送达消息给用户,报错43101 user refuse to accept the msg。
6、在一次订阅中,点击“总是保持以上选择,不再询问”+“允许”之后,只能收到一条消息通知。 勾选总是,只是在下次调用wx.requestSubscribeMessage的时候帮你默认做出选择,还是需要调用了这个才能收到消息,而不是做出一次选择后就高枕无忧了。
7、如果只需要小程序端允许接收订阅消息,而不需要在小程序端发起推送订阅消息,则不需要小程序端执行第三步,可由服务端发起推送;
8、调用接口下发订阅消息有HTTPS 调用和云调用两种方式,如使用 HTTPS 调用,则不用使用云调用方式;
总结:小程序订阅消息流程见下图。
小程序订阅消息流程.png完整代码见GitHab:小程序消息订阅
本代码中存在的问题:
1、使用个人账号无法使用微信支付功能,未验证支付成功后是否能调用订阅消息。
网友评论