一、什么是订阅消息:
订阅消息包括两种:
一次性订阅消息
一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
长期订阅消息
用户订阅一次后,开发者可长期下发多条消息。(Tips:目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放。)
二、使用说明:
·1、获取模板 ID
在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
2、小程序端授权订阅
Tips:一次授权最多可以授权三条订阅消息
wx.requestSubscribeMessage({
tmplIds: [''], // 模板ID
success (res) { }, // 接口调用成功回调(不是订阅成功回调)
fail (err) { }, // 接口调用失败回调
complete () { } // 接口调用结束的回调函数(调用成功、失败都会执行)
})
success接口调用成功回调参数
{ errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"}
可以通过模板消息对应的code码来判断该条消息订阅的结果
Code码
Code | 说明 |
accept | 表示用户同意订阅该条id对应的模板消息 |
reject | 表示用户拒绝订阅该条id对应的模板消息 |
ban | 表示已被后台封禁 |
filter | 表示该模板因为模板标题同名被后台过滤 |
Fail 接口调用失败回调参数
{errMsg: "requestSubscribeMessage:fail No template data return, verify the template id exist", errCode: 20001}
错误码
errCode | errMsg | 说明 |
10001 | TmplIds can't be empty | 参数传空了 |
10002 | Request list fail | 网络问题,请求消息列表失败 |
10003 | Request subscribe fail | 网络问题,订阅请求发送失败 |
10004 | Invalid template id | 参数类型错误 |
10005 | Cannot show subscribe message UI | 无法展示 UI,一般是小程序这个时候退后台了导致的 |
20001 | No template data return, verify the template id exist | 没有模板数据,一般是模板 ID 不存在 或者和模板类型不对应 导致的 |
20002 | Templates type must be same | 模板消息类型 既有一次性的又有永久的 |
20003 | Templates count out of max bounds | 模板消息数量超过上限 |
20004 | The main switch is switched off | 用户关闭了主开关,无法进行订阅 |
20005 | This mini program was banned from subscribing messages | 小程序被禁封 |
详见小程序端消息订阅接口 wx.requestSubscribeMessage
3、后台发订阅消息
详见服务端消息发送接口 subscribeMessage.send
三、常见问题:
- 进行订阅授权操作,只会弹出没有勾选过“总是保持以上选项,不再询问”操作的订阅消息,比如弹出三条订阅消息,其中两条进行过“总是保持以上选项,不再询问”的操作,那么会只弹出一条消息的订阅弹窗,另外两条消息会按照上次的结果进行授权,如果弹出的所有订阅消息,都有过“总是保持以上选项,不再询问”操作,那么这次的订阅消息弹窗将不会弹出,直接按照上次的结果进行授权。
- 点击取消按钮时,如果弹出的订阅消息中有进行过“总是保持以上选项,不再询问”操作的,也会按照上次的结果进行授权。
- 弹出多条订阅消息,勾选其中几条,并勾选“总是保持以上选项,不再询问”,点击取消,那么当前弹出的所有订阅消息,都会被添加总是拒绝的选项。
- 弹出多条订阅消息,勾选其中几条,并勾选“总是保持以上选项,不再询问”,点击允许,那么剩下未被勾选的订阅消息,都会被添加总是拒绝的选项。
- 当授权订阅的消息过于频繁时,会直接报错。
- 如果勾选过“总是保持以上选项,不再询问”的选项,那么就会被添加到设置当中,无法手动移除,只有在小程序管理后台当中删除对应的订阅消息,才会被删除。
- 如果关闭“接收订阅消息”的开关,那么弹出订阅消息的操作会直接报错。可以通过wx.openSetting来直接跳转到设置页面,提示用户打开。
- 一次性订阅消息,授权一次可以推送一次,所以每次授权操作都要进行弹窗授权的操作
- 弹窗订阅消息的弹窗不管是点击“取消”还是“允许”都会走成功的回调
- 微信开发者工具上只会弹出一条订阅消息,不管是否配置多条,并且不会弹出手机上的授权框
- 删除小程序后重新打开,设置当中的订阅消息选项也不会被重置。
- 获取用户是否开启“接收订阅消息”的开关和“总是保持以上选项,不再询问”的订阅消息,可以通过wx.getSetting来获取
- 如果总是允许过的订阅消息,并且有成功订阅的次数,在设置中拒绝这条订阅消息,那么再次发送这条订阅消息不会成功。