微信小程序中订阅消息的一些“坑”

一、什么是订阅消息:

订阅消息包括两种:

一次性订阅消息

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

长期订阅消息

用户订阅一次后,开发者可长期下发多条消息。(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

三、常见问题:

  1. 进行订阅授权操作,只会弹出没有勾选过“总是保持以上选项,不再询问”操作的订阅消息,比如弹出三条订阅消息,其中两条进行过“总是保持以上选项,不再询问”的操作,那么会只弹出一条消息的订阅弹窗,另外两条消息会按照上次的结果进行授权,如果弹出的所有订阅消息,都有过“总是保持以上选项,不再询问”操作,那么这次的订阅消息弹窗将不会弹出,直接按照上次的结果进行授权。

  1. 点击取消按钮时,如果弹出的订阅消息中有进行过“总是保持以上选项,不再询问”操作的,也会按照上次的结果进行授权。
  2. 弹出多条订阅消息,勾选其中几条,并勾选“总是保持以上选项,不再询问”,点击取消,那么当前弹出的所有订阅消息,都会被添加总是拒绝的选项。

  1. 弹出多条订阅消息,勾选其中几条,并勾选“总是保持以上选项,不再询问”,点击允许,那么剩下未被勾选的订阅消息,都会被添加总是拒绝的选项。

 

  1. 当授权订阅的消息过于频繁时,会直接报错。
  2. 如果勾选过“总是保持以上选项,不再询问”的选项,那么就会被添加到设置当中,无法手动移除,只有在小程序管理后台当中删除对应的订阅消息,才会被删除。
  3. 如果关闭“接收订阅消息”的开关,那么弹出订阅消息的操作会直接报错。可以通过wx.openSetting来直接跳转到设置页面,提示用户打开。

  1. 一次性订阅消息,授权一次可以推送一次,所以每次授权操作都要进行弹窗授权的操作
  2. 弹窗订阅消息的弹窗不管是点击“取消”还是“允许”都会走成功的回调
  3. 微信开发者工具上只会弹出一条订阅消息,不管是否配置多条,并且不会弹出手机上的授权框

  1. 删除小程序后重新打开,设置当中的订阅消息选项也不会被重置。
  2. 获取用户是否开启“接收订阅消息”的开关和“总是保持以上选项,不再询问”的订阅消息,可以通过wx.getSetting来获取
  3. 如果总是允许过的订阅消息,并且有成功订阅的次数,在设置中拒绝这条订阅消息,那么再次发送这条订阅消息不会成功。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值