uni-app 小程序 通过订阅消息推动服务消息
2020.09.11
以往的做法,需要使用表单提交formid,然后下发模板消息,现在通过微信小程序的「订阅消息」触发推送消息机制.
<form name='pushMsgFm' report-submit bindsubmit='form'>
<button form-type="submit">submit</button>
</form>
结果微信开发工具报错:the formId is no longer available in develop or trial version of this mini program
查阅最新文档之后,注意啦
⚠️⚠️⚠️ 小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能
通过订阅消息发送服务通知
使用说明:
步骤一: 获取模板 ID
在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com
获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
-
开通订阅消息
-
选择模版
步骤二:获取下发权限
详见小程序端消息订阅接口 wx.requestSubscribeMessage
步骤三:调用接口下发订阅消息
详见服务端消息发送接口 subscribeMessage.send 注意事项
- 一次性模板 id 和永久模板 id 不可同时使用。
- 低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
- 2.8.2 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。
- 2.10.0 版本开始,开发版和体验版小程序将禁止使用模板消息 formId。 参数
2020.09.12
服务端 uniformMessage.send 接口和 subscribeMessage.send接口有什么不同
uniformMessage.send 下发小程序和公众号统一的服务消息.
但是现在小程序的服务通知已经不支持uniformMessage.send
发送了,需要通过订阅消息 subscribeMessage.send
接口发送.
subscribeMessage.send:发送订阅消息
微信小程序发送模板消息还能使用uniformMessage.send接口么?
不能,需要通过订阅消息 subscribeMessage.send
接口发送.
订阅消息功能实现 wx.requestSubscribeMessage
使用代码
确定:accept:您已经开启订阅消息
取消: reject:您已经拒绝订阅消息
小程序订阅消息如何触发授权
模板消息和订阅消息
与「模板消息」不同的是,其是在用户点击触发或者支付成功之后,开发者可在 7天内推送1-3条服务通知。而「订阅消息」则需要用户主动订阅消息通知,开发者才可向用户推送,但不受时间限制,具体发送信息条数根据该能力的不同类型有不同标准。
订阅消息的好处:
-
选择权回到用户手中。在小程序中,「订阅消息」像是一个开关,需要用户主动点击授权之后,小程序才能向其推送服务通知,当然,用户也可以随时拒收该小程序的服务通知。而此前,用户只能被动地接收消息。
-
时长不受限制。「订阅消息」取消了7天内推送消息的时间限制,只要用户没有主动拒收消息推送,开发者就可以随时推送服务通知。对于服务周期超过7天的小程序而言,这就完美解决了此前的疑虑。
一次性订阅消息和长期性订阅消息
- 一次性订阅消息:用户订阅一次后,开发者可下发一条消息,不限时间。若用户勾选了“总是保持以上选择,不再询问”且点击了允许,那么以后都默认同意订阅这条消息。用户不再做多次选择,开发者也避免了更繁琐的提醒。
- 长期性订阅消息:用户订阅一次后,可长期下发多条消息。目前长期性订阅消息向政务、医疗、交通、金融、教育等线下公共服务开放,后续将综合评估行业需求和用户体验持续完善。(长期订阅消息只针对特定行业开放,所以普通开发者并无法使用)
图片:
2020.09.15
使用订阅消息报错:The main switch is switched off?
关闭了订阅消息,结果报错{errCode: 20004, errMsg: “requestSubscribeMessage:fail The main switch is switched off”}
小程序的订阅消息总开关没有开,需要到配置页打开。
2020.09.19
坑来啦~
- 经过测试,知道了如果想要发送订阅消息,用户必须每次触发订阅消息的授权窗口,除非勾选了
总是保持以上的选择,不在询问
,感觉这样会给用户带来不好的体验.
- 必须用户主动触发
参考文档: