前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[mini-blog]小程序订阅消息踩坑记

[mini-blog]小程序订阅消息踩坑记

作者头像
Bug生活2048
发布2019-11-10 23:17:10
1.7K0
发布2019-11-10 23:17:10
举报
文章被收录于专栏:Bug生活2048Bug生活2048Bug生活2048

有阵子没有更新我的mini-blog了,这次把推送消息那块做了些改动,小程序的模板消息即将废弃,订阅消息终于来了。

关于订阅消息

订阅消息分为一次性订阅长期订阅长期订阅就不说啦,不是个人号可以染指的。

一次性订阅消息本质和模板消息差不多,包括看了文档,接口基本上也比较相似。

一次性订阅消息最大的优势就是不再受到七天有效期的限制,同时省去了生成formId的动作,而劣势在于必须用户主动允许,且允许一次只能发送一条信息。

截图1
截图1

这样的方式其实对用户是友好的,对于自己不想要的服务通知消息都可以屏蔽,而对于自己需要的消息可以允许发送,甚至可以选择总是保持,不再询问

而对于小程序的开发和运营来说,就要考虑订阅消息的质量,是否能让用户心甘情愿的去点击允许,并能不再询问

正式接入

mini-blog做试验,准备在提交评论的时候让用户选择是否可以接受评论消息提醒。

但有点可惜的是现有模板中没有最契合这种场景的消息模板,所以只能拿留言通知这个模板凑合用了「自己申请评论提醒的模板多数是被拒的」。

截图2
截图2

至于接入,还是比较简单的,文档比较详细的。

首先通过wx.requestSubscribeMessage这个API来唤起订阅消息界面。注意一定要用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。

用户操作后回调结果会告诉你该模版用户是否同意订阅「值包括acceptrejectbanaccept表示用户同意订阅该条id对应的模板消息,reject表示用户拒绝订阅该条id对应的模板消息,ban表示已被后台封禁」

所以当用户accept之后,你就发送该模板的订阅消息了,用户会收到。

发送订阅消息可以通过云调用的方式「但现在看文档貌似找不到了,不懂什么情况」

const result = await cloud.openapi.subscribeMessage.send({  touser: openId,  page: event.page,  data: {    name1: {      value: nickName    },    thing2: {      value: event.content    },    time3: {      value: event.createDate    }  },  templateId: event.templateId})

不出意外,服务通知里就能收到消息了。

截图3
截图3

重点:哪些坑

订阅消息大致流程其实和模版消息差不多,但坑还是挺多的,这里总结下,避免大家接入的时候踩坑。

1.服务类目

小程序本身的服务类目决定你只能选择该服务类目下的订阅消息模板。公共模板库只出现绑定的类目下的模板。

截图4
截图4
2.调试

订阅消息只能通过真机调试,开发者工具不支持。

截图5
截图5
3.本质还是formId的思路

即使用户选择了不再询问,wx.requestSubscribeMessage后台还是会默认调用,只是没有弹框,也不会生成formID,这样对于我们来说不知道用户点了几次,相对的,我们也不知道可以给用户发送多少条成功的订阅消息「所以,以前是记录formID,现在依旧要记录用户点击次数,本质没差」

4.表单提交事件不支持

这也是比较坑,原本我的评论提交按钮是通过表单提交,但无法唤起订阅消息的弹框,逛了社区才知道不支持,只能改为bindtap事件

截图6
截图6
5.消息内容不支持数字

这个也好奇葩,在测试留言通知这个消息模板的时候,发现偶尔会提示data.name1.value invalid的错误,一直匪夷所思,明明都已经赋值,且日志打出来也有的,怎么会报这个错误呢,后来发现我的昵称是Bug生活2048,当我把2048去掉之后就成功发送了。

后来仔细看了文档才发现,订阅消息参数值的内容有严格限制,其中姓名data.name是不能包含数字的。

截图7
截图7

总结

订阅消息使用场景还是很多的,后面可以利用它慢慢丰富我的小程序。

文档一定要仔细看,不然小坑不断,很浪费时间。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bug生活2048 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.服务类目
  • 2.调试
  • 3.本质还是formId的思路
  • 4.表单提交事件不支持
  • 5.消息内容不支持数字
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档