【微信小程序】订阅消息的一次性订阅 vs 长期订阅?其实一次性订阅也能实现长期发布订阅消息_微信小程序一次性订阅和长期订阅
文章目录
- 前言
 - 
- 为何要订阅消息 & 订阅的好处
 
 - 一、一次性订阅 & 长期订阅
 - 二、操作步骤
 - 
- 1. 创建模板
 - 2. 前端授权订阅消息
 - 3. 后端发送订阅消息
 - 
- 引入依赖
 - 配置 application.yaml
 - 定义实体类
 - 发送请求
 - 拓展实现
 
 
 - 总结
 - 细节
 - 
- 1. 为什么发请求不传 ACCESS_TOKEN?
 - 2. 我怎么知道用户授权订阅消息了没?
 
 
前言
为何要订阅消息 & 订阅的好处
相信你也曾被微信的服务通知所骚扰过(bushi)…
没错,微信的订阅消息会发送到用户的服务通知处;
而服务通知不同于公众号/服务号等通知;
“服务通知”:属于
强提醒,会以大红点的形式出现,而且还会在手机/电脑提醒消息;“公众号/服务号”:属于
弱提醒,只会以小红点的形式出现,不会在手机/电脑中提醒。
如图(对比):

因此,订阅消息的好处就不言而喻了,最显然的就是:提高用户的转化率
一、一次性订阅 & 长期订阅
一次性订阅:用户订阅后,在任意时间发一次消息给用户,不能发第二次。
长期订阅:用户订阅后,可长期发送多条信息。(但是这个要求行业和资质高,只有特定的几个类目才能选)
那么如何实现一次性订阅也能长期发送多条消息呢?
如图:
当你调用wx.requestSubscribeMessage接口时(最多可传入3个模板id),就会触发授权弹窗。
注意!细节来了!
弹窗授权为发送一次以下消息(即一次性订阅);
 而下方的总是保持以上选择是默认的选择项(字体这么小而且还是灰色的,是不是不容易发现0.0);
简单来讲:授权
发送一次以下消息+总是保持以上选择=只要你授权一次,我就可以无限次发订阅消息
但是需要用户手动开启授权模板,如下图留言通知/榜单更新通知/新活动通知的授权按钮默认是关闭的
虽然说是这么说,但是可以通过诱导(引导)用户来开启,如:不开启可能会导致功能无法使用…
 (懂的都懂)

二、操作步骤
接下来是简单的代码实现,具体的可以自己添加更多的业务逻辑
1. 创建模板
进入微信小程序后台—“基础功能”—“订阅消息”,进入\"公共模板库\"挑选合适的模板后,得到模板ID。

2. 前端授权订阅消息
微信官方文档:小程序订阅消息(用户通过弹窗订阅)开发指南
使用
uni.requestSubscribeMessage发起授权,传参为模板ID,若有多个则需要传数组。
(最多授权3个模板ID)
注:开发时使用了uni-app框架,微信官方的API为 wx.requestSubscribeMessage,效果是一致的。
代码如下(示例):
Tip:可以在关键业务按钮埋下
授权订阅消息代码让用户授权,但也要注意用户体验。
// 创建问题const createQuestion = async () => {  // 检查模板消息订阅权限 try {  const subscribeResult = await uni.requestSubscribeMessage({  tmplIds: [ \'模板ID-1xxxxxx\', \'模板ID-2xxxxxx\', ], }) if (subscribeResult.errMsg === \'requestSubscribeMessage:ok\') {  // 用户同意了订阅或已经订阅过,继续创建问题 await handleCreateQuestion() } else {  // 用户拒绝了订阅,显示提示后继续创建 uni.showModal({  title: \'订阅提醒\', content: \'为了及时接收回复通知,建议您开启订阅消息\', confirmText: \'确定\', success: async (res) => {  if (res.confirm) {  // 用户点击确定,继续创建问题 await handleCreateQuestion() } }, }) 


