教你如何实现小程序消息推送的后台和前台开发

我们在开发小程序的时候,消息推送是不可避免的。今天教大家如何实现小程序消息推送的后台和前台开发。源代码会在文末贴出。

其实之前写过一篇文章:《springboot实现微信消息推送,java实现小程序推送,包括小程序端的实现代码》,但是有同学反应这篇文章代码太繁琐,访问也比较多麻烦。今天给大家写一个简化版。基本上只需要几行代码就可以实现小程序模板的推送功能。

老规矩先看效果图

这是我们最终推送给用户的模板消息。这是用户手机微信上显示的推送消息截图。

本节知识点

1、java开发推送后台

2、springboot实现push功能

3.小程序获取用户的openid

4.小程序获取fromid推送

我们先来看看后台推送功能的实现

只有下面这个简单的 PushController 类才能实现小程序消息的推送

让我们看一下 PushController 类。你没看错。要实现小程序消息的推送,需要以下几行代码。

既然这个push代码是用springboot实现的,就简单说一下。有几点我们需要注意。

1. pom.xml中需要引入一个三方类库(push tripartite class library)

pom.xml的完整代码如下



 4.0.0
 
 org.springframework.boot
 spring-boot-starter-parent
 2.1.5.RELEASE
  
 
 com.qcl
 wxapppush
 0.0.1-SNAPSHOT
 wxapppush
 Demo project for Spring Boot
 
 1.8
 
 
 
 org.springframework.boot
 spring-boot-starter-web
 
 
 org.springframework.boot
 spring-boot-starter-test
 test
 
 
 
 com.github.binarywang
 weixin-java-miniapp
 3.4.0
 
 
 
 
 
 org.springframework.boot
 spring-boot-maven-plugin
 
 
 

其实我们java后台的push功能到这里就已经实现了。我们只需要运行springboot项目就可以实现push。

完整的 PushController.java 类发布在下面。笔记非常详细。

package com.qcl.wxapppush;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
import me.chanjar.weixin.common.error.WxErrorException;
/**
 * Created by qcl on 2019-05-20
 * :2501902696
 * desc: 微信小程序模版推送实现
 */
@RestController
public class PushController {
 @GetMapping("/push")
 public String push(@RequestParam String openid, @RequestParam String formid) {
 //1,配置小程序信息
 WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();
 wxConfig.setAppid("wx7c54942dfc87f4d8");//小程序appid
 wxConfig.setSecret("5873a729c365b65ab42bb5fc82d2ed49");//小程序AppSecret
 WxMaService wxMaService = new WxMaServiceImpl();
 wxMaService.setWxMaConfig(wxConfig);
 //2,设置模版信息(keyword1:类型,keyword2:内容)
 List templateDataList = new ArrayList<>(2);
 WxMaTemplateData data1 = new WxMaTemplateData("keyword1", "获取老师微信");
 WxMaTemplateData data2 = new WxMaTemplateData("keyword2", "2501902696");
 templateDataList.add(data1);
 templateDataList.add(data2);
 //3,设置推送消息
 WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
 .toUser(openid)//要推送的用户openid
 .formId(formid)//收集到的formid
 .templateId("eDZCu__qIz64Xx19dAoKg0Taf5AAoDmhUHprF6CAd4A")//推送的模版id(在小程序后台设置)
 .data(templateDataList)//模版信息
 .page("pages/index/index")//要跳转到小程序那个页面
 .build();
 //4,发起推送
 try { wxMaService.getMsgService().sendTemplateMsg(templateMessage);
 } catch (WxErrorException e) {
 System.out.println("推送失败:" + e.getMessage());
 return e.getMessage();
 }
 return "推送成功";
 }
}

看代码可以知道需要做一些配置,需要如下信息

1.小程序appid

2、小程序AppSecret(密钥)

3.小程序推送模板id

4、用户的openid

5、用户的formid(一个formid只能使用一次)

下面是小程序部分,教你如何获取上面需要的5个信息。

1、获取appid和AppSecret(登录小程序管理后台)

2.推送模板id

3.获取用户的openid,可以阅读下面的文章或者源码。我不会在这里详细解释。

小程序开发中如何获取用户openid

4.变得强大

看官方文档可以知道我们的formid有效期是7天,而一个form_id只能使用一次,所以我们在小程序端要做的就是尽可能多的获取formid,然后通过一个form_id后台,使后台存储在数据库中简单微信小程序代码,这样在7天的有效期内,你可以随意使用。那么接下来要说的就是小程序开发如何获取尽可能多的formids了

看官方的简单微信小程序代码,只有在表单提交的时候report-submit设置为true才能拿到formid,比如这个

 

所以我们必须在这里努力。既然只能从表单组件中获取,那我们能不能用表单来伪装我们小程序中最常用的地方呢?

下面是一个简单的获取formid和openid的例子,方便大家学习

效果图

我们所要做的就是点击get formid按钮来获取用户的formid和openid。通常我们在开发的时候,需要把openid和formid传给后台。为简单起见,我们直接使用得到的formid和openid来实现push Features

下面来看小程序的实现代码

1、index.wxml

2、index.js

至此,我们小程序端的代码也已经实现了,接下来我们来测试一下推送。

formid: 6ee9ce80c1ed4a2f887fccddf87686eb
openid o3DoL0Uusu1URBJK0NJ4jD1LrRe0

可以看到我们使用上面得到的openid和formid进行了推送,说明推送成功了

至此,我们说完了我们的小程序消息推送的后台和小程序端。

这里有两点需要注意

1.推送的openid和formid必须对应。

2.一个formid只能使用一次,多次使用会报错。

{"errcode":41029,"errmsg":"form id used count reach limit hint: [ssun8a09984113]"}

编程小石头,码农,不是著名的全栈开发者。分享一些自己的经验和心得,希望大家以后少走弯路,补坑。

源代码下载链接在此不再单独贴出。有兴趣的可以私信我,或者在底部留言,我会在留言区贴出源码下载链接。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论