微信小程序消息订阅处理实践

微信小程序提供订阅消息功能,分为一次性订阅消息、长期订阅消息。长期订阅消息目前只针对民生、金融、教育等有线下服务场景的类目开放。这些只是大类,并不表示所包含的所有二级类目都能申请长期订阅消息,具体看官方文档。

另一个长期订阅消息就是:设备消息(不支持个人类型的小程序)。无论是一次性,还是长期,订阅过程基本一致。本文以设备消息为例说明。

主要流程是:用户首次打开小程序,在指定页面,点击指定界面元素,弹窗询问是否订阅消息。这个弹窗是调用微信相关订阅接口后,自动弹出的。在窗口可以选择:取消、允许(可加提醒)、拒绝。

“取消”:相对于订阅没有明确的态度。再点击订阅触发元素,会再弹窗。

“允许”:表示允许下发消息

“添加提醒”:表示收到消息时会有提醒(针对设备消息:横幅+震动+铃声)

“拒绝”:表示不接收消息

无论是“允许”还是“拒绝”都是明确的态度,微信可能不想你再打扰用户,再调用订阅接口,就不会弹窗了。要想改变态度,就只能引导用户,从小程序右上角的按钮进入设置菜单更改。

具体的分析如下:

1.首次进入小程序。进入右上角菜单,设置-》通知管理-》接收通知

此处“接收通知”的开关默认是开的。且无当前小程序的信息。这就是首次进入小程序的,订阅相关设置的状态。

2.在某个页面我们点击了一个按钮:“一键订阅”,前端调用微信订阅接口,弹窗等待用户意见。

订阅接口:uni.requestSubscribeDeviceMessage

注:截图非完整代码

当选择“取消”,表明用户没有明确态度,回调进入的是fail

选择“拒绝”,回调进入的也是fail

选择“允许”,回调进入的也是success (所以indexOf判断可以不要)

不同的选择返回值具体又是什么样的呢?

“取消”回调结果:errMsg:操作结果说明

“拒绝”回调结果:errMsg:操作结果说明,[xxxx]:"reject",表示该模板id对应订阅为拒绝

“允许”回调结果:需要说明的是,即使点击了“添加提醒”,接口的返回值也为“accept”(相对于getSetting方法返回值,可能是accept、acceptWithForcePush)

根据测试,选了“取消”后,再调用订阅接口,可以再次弹出询问窗口。选“允许”或“拒绝”后,再调用订阅接口,不再弹窗,直接返回上次回调结果,进入相对应的回调方法。

如上次是“拒绝”,再调用订阅接口,直接回调到fail方法。结果值与上次一样。符合“拒绝,不再询问”。“允许”也具有“不再询问”的特性。

如果用户误选了“拒绝”,如何处理呢?

3.调用订阅接口结束后,小程序设置菜单里的订阅设置是有变化的,是有联动的。具体如下:

首次使用小程序,调用订阅接口前,设置菜单里是比较干净,如前面截图。调用订阅接口后,设置菜单里订阅相关地方会有小程序的痕迹,订阅结果也会反映到这里。

图示1处就是小程序的名称,也即前面提到的订阅后(无论允许或拒绝)会在这留下痕迹。

而2处就是该小程序下的一个消息名称(对应一个消息模板),当然一个小程序可能有多个订阅消息(每次订阅最多3个)。右侧为订阅状态,点击后可以进行修改。

也可以理解为:设置菜单里,“接收通知”有了小程序的痕迹(小程序的消息标题),再调用订阅接口不再弹窗。

要修改订阅结果,就只能引导用户手动到设置菜单里修改。

另外,要恢复初始状态(要求出现订阅弹窗),就先删除小程序,再使用。

总结:订阅消息(此处指设备消息)要想下发成功,总的来说是受小程序自身设置控制的。首先设置中的【接收通知】作为总开关要是打开状态,其次,总开关下要有该小程序消息痕迹,且订阅状态是“接收”或“接收并提醒”。

在首次使小程序时,【接收通知】总开关是开的。用户的小程序设置菜单(接收通知)中还没有该小程序的痕迹,也就达不到上面说的第二个条件(即便总开关是开的)。要留下痕迹,就需要显示引导用户授权---弹出订阅窗口。只要用户进行了订阅操作(允许或拒绝)就能留下痕迹。

通知管理中有了小程序痕迹,后续的订阅权限申请将不再弹窗。再调用订阅接口,结果还是上次的。需要引导用户到设置菜单,进行手动更改。

前端调用订阅接口的作用:1.订阅权限的开通,即:允许接收模板消息;2:model_id和sn的绑定要告知微信平台。

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值