您的位置:网站首页 > 产品信息 > 正文

开发 教你突破小程序模板消息的推送

类别:产品信息 日期:2018-12-10 1:50:05 人气: 来源:

  这种消息的控制放的太宽的话,很容易对用户的体验造成很大冲击,给用户带来。但是,用户 1 次触发、7 天内推送 1 条通知明显是不够用的。 比如,小打卡小程序利用模板消息的推送来提醒用户每天打卡,只能在用户前一天打卡的情况下,获取一次推送模板消息的机会,用于第二天向用户发送打知。 但是,用户如果某一天忘记打卡,小打卡便失去了提醒用户的权限,和用户断开了联系。在小打卡中,还有一个迫切需要多条模板消息推送的场景。比如打卡活动每次有新的进入,需要通知管理员进行审核。 这种情况也需要及时地通知管理员,以便管理员快速响应,处理的审核请求、并通知审核结果。 我们可以注意到,脖子上有痣代表什么在下发条件中,每次触发得到的推送码可以在未来 7 天内使用,多次提交触发下发的消息条数,相互不影响。那能不能利用它,突破模板消息的发送,更好地优化打卡提醒功能呢? 如何突破模板消息的推送? 微信小程序最近已经透露出,可能对模板消息进一步放宽的信号。 不过在这之前,我们可以在遵守相关运营规范、用户体验的情况下,倒腾一个「让用户一次触发、多次推送,甚至群发模板消息」的解决方案。其实仔细分析消息下发条件中的「每次触发获得 7 天有效推送码」、「多次提交触发下发的消息条数」,突破口就明显了。 只需收集到足够推送码,即每次提交表单时获取到的formId,就可以获得我们所需的「推送权限」。它是一次性的,代表着开发者有向当前用户推送模板消息的权限。 为了打造这样一个突破的模版消息推送功能,做到 7 天内「任性」推送,我们将小程序前后端的工作明确一下:

  小程序后端,即服务器负责将推送码存储到数据库中,并在需要推送时,从中取出推送码formId来推送消息。

  在form组件中,当属性report-submit为true时,代表需要请求发模板消息的推送码。 此时,点击按钮提交表单可以获取formId,用于发送模板消息。 接下来,只需要对原来的页面进行,将用户原来绑定了点击事件的界面用表单组件中的button按钮组件来代替。 也就是说,我们把用户的交互点击的bindtap事件,通过表单bindsubmit来取代,从而捕获用户的点击事件来产生更多的推送码formId。

  的代码,主要实现了用模拟表单提交事件,来取代原来的点击事件。用户在点击界面进行交互的同时,能够获得多个推送码。我们将其保存到app.js的全局变量中。 待用户下一次发起需联网的操作时,即可将存储formId的数组数据发送给服务器。上图以小打卡的打卡详情页为例,用户在这个页面的点击操作可以很快收集到多个formId。将界面上用户高频点击的事件用表单的形式重新封装后,可以静默、快速收集到所需的「模板消息推送权限」。 如何传递推送码?

  在小程序的逻辑层中,全局变量gloabalFomIds收集到多个formId后存储。 当新页面载入且 不为空时,可以把 数组格式化为字符串发送到服务器,然后并清空当前的 ,以便继续获取新的formId。 后端程序如何保存推送码? 这个保存是一个高频 IO 的操作。我们后端以 PHP 为基础,结合高性能的键值对数据库 Redis 来实现推送码的存储。

  这一步,主要是构建服务器程序,高效存储用户的推送码。 这下推送机会有了,接下来,我们考虑如何利用后端程序来想特定用户发送模板消息,考虑怎样去合理运用推送机会。 如何实现高性能的模板消息推送? 构建高性能的服务器端异步任务推送,可以满足模板消息的群发和定时发送的需求。 小打卡就采用了高性能分布式内存队列系统 Beanstalkd,来实现模板消息的异步定时推送。 实现发送模板消息的群发、定时发送分为 2 个步骤:

  通过任务发送服务轮询执行任务,获取access_token、指定你需要推送消息的用户的openId;

  根据openId,获取用户的推送码formId,并结合模板 ID 拼装模板上的通知内容,调用模板消息发送接口来异步发送。

  普通的模板消息的发送就不赘述了,可参考文档中的模板消息功能一步步进行操作。我们重点来看高性能异步任务推送的实现方法。

  Beanstalkd 是一个高性能、轻量级的分布式内存队列系统。通过 Beanstalkd,可以将模板消息推送任务的创建以及任务的执行分开进行。 在创建推送任务时,我们可以设置任务的执行时间,以及定义推送消息的类型、通知内容等数据。 在任务执行时,我们通过 Beanstalkd 的任务函数来捕获任务。 我们通过预先在创建任务时标记的数据,来确定模板消息的具体推送内容。 比如用户openId,通过用户openId获取一个可用的推送码formId,获取推送内容等,最后在调用微信小程序模板消息下发接口完成推送。getFormId函数主要实现每次取出一个未过期可用的推送码formId,并且删除不可用的邀请码和当前已选中的邀请码,以一定数额的推送码formId在未来一周内可用。 最后总结一下:整个方案涉及到的关键词有表单、按钮、formId、模板消息、Redis、Beanstalkd 等。 同时,整个流程涉及了多项技术的组合,包括前端开发、后端开发、数据库技术等,且前后端分工明确,共同支撑整个方案地实现。正如我之前文章里所说的,微信小程序开发的难点不在于小程序本身,小程序开发技术是前后端一系列的技术的组合。 开发者需要持续学习,掌握、提升更多的相关开发技术,来更好地支撑产品的功能实现。 最后,这个方案可以在用户最后一次使用小程序后的 7 天内,对用户发送多条模板消息,但是请一定要在遵循微信的运营规范的前提下,合理使用这样的模板消息推送功能。

  本文由来源于财鼎国际(http://cdgw.hengpunai.cn:27531/)

关键词:产品详情模板
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2016 木工设备网 技术支持 FXT All Rights Reserved