E企盈营销工具技术服务商 热线:4006-838-530

微信小程序中服务器主动向小程序多个客户端发送通知消息(模板消息)的解决方法

E企盈直播平台营销卖货系统

因公司做的一项目,需要用到移动端,但是移动端的操作功能不是很多。如果开发app的话,就需要开发两个版本;为了方便,经过商量后就采用了微信小程序开发。但是,由于小程序的局限性,导致某些功能不太好实现,本文主要针对小程序消息通知(实现服务器主动向不同客户端发送消息通知)进行一种解决思路的介绍。    小程序开发官方API中的消息通知有下发条件且只有两种情况:        如果我们在开发的过程中需要实现某个用户操作完成之后,需要通知下个用户来进行操作,我们需要发送一条通知消息给接下来需要操作的用户。但是小程序官方文档中的消息通知只有在支付与表单提交的时候,才能下发消息通知。因此我们只能从这两种里面选择实现。我们用排除法,支付肯定不行,所以就只剩下表单提交了,但是表单提交又涉及到一个问题,就是要求小程序内发生提交表单的行为,而且只能是通知到操作本人。因此,我们就需要换种思路来解决问题,下面就解决思路做以介绍。    既然不能直接用表单的提交操作,我们就需要想办法间接的用表单方式实现消息通知。我们可以先获取到表单提交的数据(主要是获取formId,微信小程序的模板消息发送提供的接口中必要参数–表单提交方式条件下),将数据保存到后端,然后在用的时候,取出即可。    具体做法就是,前台获取formId发送到后台服务器,后台调用接口实现发送消息通知,由于formId只能有用户触发表单提交操作产生,英雌需要前台将每次获取得到的formId都要发送到后台服务器,后台将收集到的formId与对应的用户绑定存储,代码实现如下:    小程序端:<form bindsubmit=”submit” report-submit=’true’ >  <button form-type=”submit” type=”default” size=”mini”>提交</button></form>submit: function (e) {  console.log(e.detail.formId);}    注意:表单的需要添加属性  report-submit=’true’。    后台服务器保存实体:public class WeChatUserMapper implements Serializable{    private Integer id;    private String formId;//表单Id    private String openId;//微信账号的openId    private String templateId;//消息模板Id    private Date createDate;//创建日期    public WeChatUserMapper() {    }    public WeChatUserMapper(Integer id, String formId, String openId, String templateId, Date createDate) {        this.id = id;        this.formId = formId;        this.openId = openId;        this.templateId = templateId;        this.createDate = createDate;    }    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    @Column(name = “id”)    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    @Column(name = “form_id”)    public String getFormId() {        return formId;    }    public void setFormId(String formId) {        this.formId = formId;    }    @Column(name = “open_id”)    public String getOpenId() {        return openId;    }    public void setOpenId(String openId) {        this.openId = openId;    }    @Column(name = “template_id”)    public String getTemplateId() {        return templateId;    }    public void setTemplateId(String templateId) {        this.templateId = templateId;    }    @Temporal(TemporalType.TIMESTAMP)    @Column(name = “create_date”,length = 23)    public Date getCreateDate() {        return createDate;    }    public void setCreateDate(Date createDate) {        this.createDate = createDate;    }}    当然,存储的formId肯定需要给一个上限,要不然,formId的个数会无限存储。将获取的formId存储后,最后就是调用模板消息发送接口,实现消息通知发送。当然,发送之前必须得判断,formId是否还有效,因为,formId获取后,只有7天的生命周期,一旦超过这个时间,该formId就无效,从而会导致发送消息通知失败,因此,在每次获取你保存的formId对应的映射信息时,你必须保证formId的有效性,将无效的formId清除掉。同时也要讲已用过的formId删除掉。    下面就是最终的消息通知展示:微信小程序

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序中服务器主动向小程序多个客户端发送通知消息(模板消息)的解决方法
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏