前言
-
公众号分订阅号和服务号: 订阅号为每天1次,但是会隐藏在订阅栏目中,不会有数字通知; 服务号为每月4次,可以像朋友消息一样有数字通知。此外服务号还有一种模版消息,可用于公众号向用户发送重要的服务通知,日调用上限为10万次。 -
小程序的消息通知也有订阅功能:参考资料 一次性订阅:一次调用最多可订阅3条消息。 永久订阅:用户订阅一次后,开发者可长期下发多条消息。目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放。
环境
微信公众平台
登录小程序,选择订阅消息并开通 然后选择一次性订阅消息(永久订阅不太好申请)。注意,从一次性订阅消息模板中选择订阅消息时,你能搜索看到的订阅消息模板跟你登录的小程序类目有关,类目设置位置见下图。 当你选用了正确的合适的模板后,将模板的ID给到后端,此外还有模板下的详细内容字段。如下图(点击我的模板->详情) 因为我的模板时通过后端接口获取的,所以我的模板是可以在上线以后再重新修改?还没试过,但理论来说可行。
JAVA
因为我们后端要计数用户同意的模板,未同意的就不发送通知了。当时考虑的方案有2
- 前端从微信的回调方法中拿到结果通过接口上传给后端
- 后端直接对接微信,通过订阅消息事件推送来获取用户授权情况
经过前端的坚持不懈的抗争(从复用性、扩展性以及可靠程度等等方面摆道理讲事实以及充分的忽悠能力),决定采用方案2。但在对接的过程中遇到一个问题。提交时总是报错
在小程序的开发管理->开发设置->消息推送,配置信息时按照要求将文件放到对应域名下但还是失败。问了后台开发,说是已按照要求做了接受消息推送的Post方法。微信在这方面也没有详细的说明,就只能去百度谷歌找找经验了。
偶然看到一个同坑位前人栽的树,一看阴凉貌似挺大,躲一下~
微信在提交时会发送一个get请求到提交的服务器地址上来做一个认证,表示该地址有效且合法。但我们服务端只做了post的消息接收请求,没有做get请求,所以在提交的时候微信认证是不通过的,报失败也就情有可原了。立马通知后端~赶紧做,坐等 经过后端开发人员加班加点(没有验证签名,直接返回echostr,此字段一定要原样返回,不然可能还是会类型不对导致验证失败)后,配置成功! 测试如下
成功配置 另附后端代码 链接: https://pan.baidu.com/s/1n9X6ss1jGqXvPn7zSyUJZg 提取码: htc3
|