目录

1、开通订阅消息

2、请求用户授权

2.1、wx.requestSubscribeMessage(Object object)

2.2、wx.requestSubscribeDeviceMessage(Object object)

3、发送订阅信息

3.1、调用方式

3.2、云调用接口方法

3.3、请求参数

3.4、返回值

3.5、代码示例

1、开通订阅消息

登录小程序之后点击功能下的订阅消息点击开通

选择公共模板库的一次性订阅

我选择是注册模板,模板ID就是我所需要的东西

2、请求用户授权

订阅消息授权时,只能是用户点击或者支付完成后才可以调起来授权弹窗,详情请见微信官方文档-requestSubscribeMessage

2.1、wx.requestSubscribeMessage(Object object)

调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。

参数

属性 类型 默认值 必填 说明
tmplIds Array 需要订阅的消息模板的 id 的集合,一次调用最多可订阅3条消息。每个 tmplId 对应的模板标题需要不相同,否则会被过滤。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行

object.success 回调函数

属性 类型 说明
errMsg String 接口调用成功时 errMsg 值为'requestSubscribeMessage:ok'
[TEMPLATE_ID: string] String

[TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'、'filter'。

'accept'表示用户同意订阅该条 id 对应的模板消息,

'reject'表示用户拒绝订阅该条 id 对应的模板消息,

'ban'表示已被后台封禁,

'filter'表示该模板因为模板标题同名被后台过滤。

例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息

object.fail 回调函数

属性 类型 说明
errMsg String 接口调用失败错误信息
errCode Number 接口调用失败错误码

错误码

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 小程序被禁封
20013 Reject DeviceMsg Template 不允许通过该接口订阅设备消息

代码示例

    var TemplateID = 'xxxxxxxx'var TemplateStatus = wx.getStorageSync('TemplateID')if(TemplateStatus != 'accept'){wx.requestSubscribeMessage({tmplIds: [TemplateID],complete (res) {console.log("complete: ",res)wx.setStorageSync('TemplateID', res[TemplateID])},})}

使用效果

可以看到,这里显示的就是我们添加的 ‘注册成功通知’的模板。

真机上多了一个 ‘总是保持以上选择,不再询问’

2.2、wx.requestSubscribeDeviceMessage(Object object)

订阅设备消息接口,调用后弹出授权框,用户同意后会允许开发者给用户发送订阅模版消息。当用户点击“允许”按钮时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。

当前未使用

3、发送订阅信息

回复信息时需要使用用户的openid

详情请见微信官方文档: 微信官方文档-subscribeMessage.send

3.1、调用方式

  • HTTPS 调用
  • 云调用

当前使用云调用

3.2、云调用接口方法

openapi.subscribeMessage.send

3.3、请求参数

属性 类型 默认值 必填 说明
touser string 接收者(用户)的 openid
templateId string 所需下发的订阅模板id
page string 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
data Object 模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }
miniprogramState string 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
lang string 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN

3.4、返回值

返回的 JSON 数据包

属性 类型 说明
errCode number 错误码
errMsg string 错误信息

errCode 的合法值

说明
0 成功

异常

属性 类型 说明
errCode number 错误码
errMsg string 错误信息

errCode 的合法值

说明
40003 touser字段 openid 为空或者不正确
40037 订阅模板 id 为空不正确
43101 用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系
47003 模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错
41030 page路径不正确,需要保证在现网版本小程序中存在,与 app.json 保持一致

3.5、代码示例

在云函数中调用,UserOpenid是微信用户的openid,TemplateID是模板id

    try {const result = await cloud.openapi.subscribeMessage.send({"touser": UserOpenid,"templateId": TemplateID,"lang": 'zh_CN',"data": {"date2": {"value": '2015年01月05日'},"thing4": {"value": '阿里巴巴'},"character_string9": {"value": '123456789'}},})return result} catch (err) {return err}

其中date2、thing4、character_string9是根据小程序中的模板定义的

效果如图:

微信小程序之订阅消息推送相关推荐

  1. 微信小程序-一次性订阅消息推送

    前置条件: 1.登录微信公众号平台 完善小程序信息,小程序类目. 2.配置自己的消息模板或者使用公共的消息模板. 3.存在正确的openid. 执行步骤: 1.获取已配置好的模板id 2.获取订阅消息 ...

  2. 接入微信小程序客服消息推送

    微信小程序客服消息推送接入 这两天弄一个客服的消息推送,这里必须吐槽一下,按我以往接微信的东西的感觉这块估计也要踩坑的,而且众所周知微信的文档很坑的也乱.(吐槽一下) 小程序的配置设置: URL(服务 ...

  3. uniapp如何使用微信小程序的订阅信息推送消息给用户?

    1.首先获取小程序用户登录openId // 获取openidasync opid() {let self = thiswx.login({success(res) {if (res.code) { ...

  4. 【微信小程序】模板消息推送(测试成功)。

    note: 这几天想做微信小程序消息推送的功能,然后在网上找了好多教程,都没解决问题,官方文档写的教程由不够详细,所以走了好多弯路. 现在问题解决了,记录一下. 我在网上找的好多教程都不详细,虽然是贴 ...

  5. 为什么微信有时无法接收到服务器,微信小程序开启了消息推送,服务器有时候接收不到...

    后台是用koa2写的,开启了自动回复后,服务器有时候接收不到微信的请求.有时候可以.连续发送的情况下多半失败,是不是接收了后,得给微信返回什么.关键代码如下: const { ToUserName, ...

  6. 微信小程序通过服务号推送模板消息

    前言 公司要做一款新的微信小程序,因为业务需求要加入消息推送.因为之前APP是通过服务号推送给用户消息的,所以微信小程序要做消息推送也是首先想到了通过服务号推送.事实上在使用过程中服务号推送还是非常好 ...

  7. 微信小程序云开发定时推送订阅消息

    微信小程序云开发定时推送订阅消息 1.找到自己想要的模板 (1)点击订阅消息 (2)点击公共模板库,然后找到想要选用的模板,点击选用. (3)在我的模板里面,复制模板id. 如果找不到想要用的模板,可 ...

  8. 小程序消息主动推送php,微信小程序有几种推送消息的方式

    微信小程序有5种推送消息的方式,分别为:1.小票机订单提醒,实现对商家的消息提醒:2.短信提醒:3.模板消息,各种动态可及时掌握:4.公众号订单提醒:5.消息主动推送,商家主动出击.推销自己的最好手段 ...

  9. 微信小程序之订阅消息实现

    微信小程序基于微信用户群体,以轻量级无需下载的优势,取代了众多笨重的APP. 而微信小程序的订阅消息,是开发者常用的功能,适用于小程序功能推广,提高用户粘性. 这里我的权限只能使用一次订阅消息,以一次 ...

最新文章

  1. WebSphere MQ For AIX和HP-UX安装配置
  2. 2015年微软亚洲研究院的惊艳项目,人工智能抢眼
  3. ibm服务器虚拟化报价,IBM x86 服务器虚拟化服务.pdf
  4. docker迁移与备份
  5. mysql 查看端口_新手连接MySQL数据库,再也不怕连不上了
  6. kafka是如何通过配置的bootstrap.servers获取topic元数据的呢
  7. Bootstrap3基础 warning/active... 表格的状态类(不同的背景色)
  8. 软件设计师-数据库( 分布式)
  9. C语言和设计模式(命令模式)
  10. 帧同步分离逻辑层和渲染层_帧同步如何分离逻辑和渲染?
  11. iic标准c语言,I2C总线之(三)---以C语言理解IIC
  12. 通过IDA Pro生成asm文件
  13. 企业盈利能力五大指标之:净利润现金流比率
  14. Python项目实战:爬取图虫创意优质高清壁纸图
  15. 颜色综述何为三原色?配色原理?
  16. 亲和图信息管理联想发散思维
  17. IBM X服务器BIOS 使用说明
  18. 不可不学的摄影技巧.3——摄影小窍门
  19. GitHub Education Tools (学生包)申请教程 Digital Ocean 50美元优惠码使用教程
  20. HTML5的学习网站有哪些?

热门文章

  1. Windows编程(2)
  2. java集合类-list
  3. 苹果uwb_iPhone11的UWB有什么用?苹果大规模扩展 HomeKit 全靠它
  4. java winrar_Java使用winrar解压缩 | 学步园
  5. CS224n笔记——Subword Model(十二)
  6. 【深度学习】数据读取与数据扩增方法
  7. 剑指Offer面试题22(Java版):栈的压入、弹出序列
  8. u大师u盘装系统破解Windows开机密码
  9. [机缘参悟-72]:深度思考-人生自省的四重境界:不觉、自觉、觉他、圆满
  10. 小程序实现分享朋友圈