美文网首页
微信小程序发送消息简单Demo

微信小程序发送消息简单Demo

作者: 文不就与童不羁 | 来源:发表于2019-11-25 22:18 被阅读0次

    前言


      最近项目有需求需要用到微信小程序推送消息,在此记录一下实验过程。

    前提准备


    在开始前,你需要准备:

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

    正式


    微信小程序发送消息主要通过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,在微信公众号后台可以看到。


      image.png
    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. 请求后台接口来发送消息(ctrl c v 百度某同学)
    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;
    
    @RestController
    public 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 "推送成功";
        }
    
    }
    
    image.png

    一个简单的小程序推送demo ,权侵删

    相关文章

      网友评论

          本文标题:微信小程序发送消息简单Demo

          本文链接:https://www.haomeiwen.com/subject/itfswctx.html