干货 | 微信小程序推送消息简单Demo

  • 2019 年 12 月 17 日
  • 笔记

在开始前,你需要准备:

  1. 注册微信小程序
  2. 一个简单的springBoot 项目
  3. 微信开发者工具

 正式 

微信小程序发送消息主要通过WxMaTemplateMessage 类来推送

public class WxMaTemplateMessage implements Serializable {    private String toUser;       // 给谁推送(用户openId)    private String templateId;  // 消息ID    private String page;    // 用户点开消息跳转到对应的小程序界面    private String formId;  // 表单formId    private List<WxMaTemplateData> data; // 消息的数据列表    private String emphasisKeyword;  ...复制代码

所以我们在推送前需要构造这些信息,formId 和toUser(openId) 是从前端传过来的。formId 可以通过表单或者支付来获取,表单比较简单,只需要把report-submit 设置为true 就可以获得。简单通过微信开发者工具来获取formId(openId 数据库存了)

  1. 先建立一个前端项目,AppID 就是小程序的id,在微信公众号后台可以看到。

2. 修改index/index.js 和index.wxml (百度某位同学的),通过表单来获取formId ,并发送到后台。

// index.wxml<form bindsubmit='registerFormSubmit' report-submit='true'>  <view class='buttons'>    <button class='confirmbtn' form-type='submit'>确定</button>  </view>  </form><view>formid:{{formid}}</view><button bindtap='push'>    发送</button>  复制代码
//index.js//获取应用实例const app = getApp()  Page({    data: {    formid: ""  },  //事件处理函数  registerFormSubmit: function (e) {    //    打印formId    console.log(e.detail.formId);    this.setData({      formid: e.detail.formId    })   },  //测试推送 push() {    let formid = this.data.formid;   let openid = 'oT-H-40ZHdRX1REZFKQhPg3jJZoQ';    wx.request({      url: 'http://localhost:8080/push?openId=' + openid + "&formId=" + formid,      success(res) {        console.log("推送结果:", res)      },      fail(err) {        console.log("推送失败:", err)      }    })  }})  复制代码

这里formid 在测试的时候获取不到,调到真机调试,或者用预览就行了。

  1. 请求后台接口来发送消息
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;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;  import java.util.ArrayList;import java.util.List;  @RestControllerpublic class PushController {      @GetMapping("/push")    public String push(@RequestParam String openId, @RequestParam String formId) {        //1,配置小程序信息        WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();        wxConfig.setAppid("你的appId");        wxConfig.setSecret("你的secret");          WxMaService wxMaService = new WxMaServiceImpl();        wxMaService.setWxMaConfig(wxConfig);          //2,设置模版信息(keyword1:类型,keyword2:内容)        List<WxMaTemplateData> templateDataList = new ArrayList<>(2);        WxMaTemplateData data1 = new WxMaTemplateData("keyword1", "获取老师微信");        WxMaTemplateData data2 = new WxMaTemplateData("keyword2", "2501902696");        WxMaTemplateData data3 = new WxMaTemplateData("keyword3", "2501902696");        WxMaTemplateData data4 = new WxMaTemplateData("keyword4", "2501902696");        templateDataList.add(data1);        templateDataList.add(data2);        templateDataList.add(data3);        templateDataList.add(data4);          //3,设置推送消息        WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()                                                  .toUser(openId)                                                  .formId(formId)                                                  .templateId("你的消息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 "推送成功";    }  }复制代码

原文作者:Rolan

原文链接:http://www.wxapp-union.com/article-5698-1.html

直播预告

如何才能毕业不失业?如何避开职场面试的坑?

如何保持超强竞争力?如何突破职业瓶颈?

NEXT学院邀请互联网一线大咖

开设系列直播讲座为IT从业者答疑解惑!

本周四19:00,小N在直播间等你喔~

点击阅读原文,提前报名