微信小程序之订阅消息推送
目录
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.登录微信公众号平台 完善小程序信息,小程序类目. 2.配置自己的消息模板或者使用公共的消息模板. 3.存在正确的openid. 执行步骤: 1.获取已配置好的模板id 2.获取订阅消息 ...
- 接入微信小程序客服消息推送
微信小程序客服消息推送接入 这两天弄一个客服的消息推送,这里必须吐槽一下,按我以往接微信的东西的感觉这块估计也要踩坑的,而且众所周知微信的文档很坑的也乱.(吐槽一下) 小程序的配置设置: URL(服务 ...
- uniapp如何使用微信小程序的订阅信息推送消息给用户?
1.首先获取小程序用户登录openId // 获取openidasync opid() {let self = thiswx.login({success(res) {if (res.code) { ...
- 【微信小程序】模板消息推送(测试成功)。
note: 这几天想做微信小程序消息推送的功能,然后在网上找了好多教程,都没解决问题,官方文档写的教程由不够详细,所以走了好多弯路. 现在问题解决了,记录一下. 我在网上找的好多教程都不详细,虽然是贴 ...
- 为什么微信有时无法接收到服务器,微信小程序开启了消息推送,服务器有时候接收不到...
后台是用koa2写的,开启了自动回复后,服务器有时候接收不到微信的请求.有时候可以.连续发送的情况下多半失败,是不是接收了后,得给微信返回什么.关键代码如下: const { ToUserName, ...
- 微信小程序通过服务号推送模板消息
前言 公司要做一款新的微信小程序,因为业务需求要加入消息推送.因为之前APP是通过服务号推送给用户消息的,所以微信小程序要做消息推送也是首先想到了通过服务号推送.事实上在使用过程中服务号推送还是非常好 ...
- 微信小程序云开发定时推送订阅消息
微信小程序云开发定时推送订阅消息 1.找到自己想要的模板 (1)点击订阅消息 (2)点击公共模板库,然后找到想要选用的模板,点击选用. (3)在我的模板里面,复制模板id. 如果找不到想要用的模板,可 ...
- 小程序消息主动推送php,微信小程序有几种推送消息的方式
微信小程序有5种推送消息的方式,分别为:1.小票机订单提醒,实现对商家的消息提醒:2.短信提醒:3.模板消息,各种动态可及时掌握:4.公众号订单提醒:5.消息主动推送,商家主动出击.推销自己的最好手段 ...
- 微信小程序之订阅消息实现
微信小程序基于微信用户群体,以轻量级无需下载的优势,取代了众多笨重的APP. 而微信小程序的订阅消息,是开发者常用的功能,适用于小程序功能推广,提高用户粘性. 这里我的权限只能使用一次订阅消息,以一次 ...
最新文章
- WebSphere MQ For AIX和HP-UX安装配置
- 2015年微软亚洲研究院的惊艳项目,人工智能抢眼
- ibm服务器虚拟化报价,IBM x86 服务器虚拟化服务.pdf
- docker迁移与备份
- mysql 查看端口_新手连接MySQL数据库,再也不怕连不上了
- kafka是如何通过配置的bootstrap.servers获取topic元数据的呢
- Bootstrap3基础 warning/active... 表格的状态类(不同的背景色)
- 软件设计师-数据库( 分布式)
- C语言和设计模式(命令模式)
- 帧同步分离逻辑层和渲染层_帧同步如何分离逻辑和渲染?
- iic标准c语言,I2C总线之(三)---以C语言理解IIC
- 通过IDA Pro生成asm文件
- 企业盈利能力五大指标之:净利润现金流比率
- Python项目实战:爬取图虫创意优质高清壁纸图
- 颜色综述何为三原色?配色原理?
- 亲和图信息管理联想发散思维
- IBM X服务器BIOS 使用说明
- 不可不学的摄影技巧.3——摄影小窍门
- GitHub Education Tools (学生包)申请教程 Digital Ocean 50美元优惠码使用教程
- HTML5的学习网站有哪些?