基于微信的通知渠道,微信为开发者提供了可以高效到达用户的模板消息的能力,从而实现服务的闭环,提供更好的体验。(微信6.5.2及以上版本支持模板功能。低于此版本,您将无法接收模板消息。)
模板推送位置:服务通知(单击查看详细信息,您可以跳转到发送消息的小程序的指定页面)
模板分发条件:用户在微信系统中与页面交互后触发。
微信小程序模板消息使用说明(官方文件):https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html
为了防止模板消息被滥用,带来不好的用户体验,小程序对模板消息推送做了相应的限制。
分发条件描述(触发模板消息分发的两种情况):
1.支付
当用户在小程序中完成支付行为后,可以允许开发者在7天内向用户推送有限数量的模板消息(一次支付可以发布三条消息,多次支付发布的消息数量是独立的,互不影响)。
提交表格
当用户在小程序中提交表单并声明表单发送模板消息,开发者需要为用户提供服务时,可以允许开发者在7天内向用户推送有限数量的模板消息(一个提交表单可以发出,多次提交的数量是独立的,互不影响)。
也就是说,一旦用户提交表单,它将为开发者提供一次推送权限,在多次提交的情况下,帖子的数量将是独立的。因此,如果开发人员想在7天内无限期地向用户推送消息,只需要从用户那里获得足够的推送权限(推送权限就是表单表单的表单ID)。
因此,我们可以在首页收集用户的表单并保存在服务器上。根据小程序的文档,如果用户在小程序中提交了一个表单,并且该表单被声明为发送模板消息,则只有在用户提交表单时才能收集formid。因此,我们可以用表单组件中的按钮组件替换用户在页面上可以点击的按钮或其他元素,用表单的bindtap事件替换用户交互点击的bindtap事件,从而捕捉用户的点击事件,生成更多的表单id。当真正需要网络请求时,收集的formid将被发送到服务器进行存储。发送成功后清除表单,以便再次收集新表单。
发送模板消息时,后端首先从保存的formid中挑出一个未过期的formid,并删除过期的不可用的fromid和当前使用的formid。
注意:这只是一个解决方案。请大家一定要在严格遵守小程序操作规范的前提下,把这个想法作为参考。
未解决的问题:如果用户在一周内没有访问或点击小程序中的任何组件,那么我们无法收集有效的fromid,这意味着我们失去了向用户发送模板消息的权利。这种情况下我们该怎么办?