微信小程序开发—消息推送

    微信小程序的消息推送简单的说就是发送一条微信通知给用户,用户点开消息可以查看消息内容,可以链接进入到小程序的指定页面。

    微信小程序消息推送需要用户触发动作才能发送消息,比如用户提交订单、支付成功。一次只能发一条,当然可以通过某种方法发送多条,小的就不在这里赘述了。下面就介绍一下如何推送消息。

一、准备工作

    首先,在微信公众平台开通消息推送功能,并添加消息模板。可以从模板库选择模板也可以创建一个模板,模板添加之后,模板ID我们接下来要用的。

    发送模板消息需要用到accesstoken、formId和openID。accesstoken获取及更新可以看我的上一篇文章;formID就是消息模板ID,openID我们最好在获取用户信息或用户登录时储存到全局变量里。


二、获取formID。

 在需要触发消息推送的页面添加提交表单的事件。目的是得到formID,formID是消息推送时必须的参数。

<form name='pushMsgFm' report-submit='true' bindsubmit='getFormID'> 
  <button form-type="submit" class="zan-btn zan-btn--large zan-btn--danger payButton">立即支付</button>
</form>  

以上代码中“getFormID”是提交表单时触发的事件。

getFormID: function (e) {
this.setData({
formId: e.detail.formId }) }

以上方法是获取formId。

三、配置消息模板参数,并传给后台。

var config = require('../config.js')
var app = getApp();
function pushMsg(formID, access_token){
  var openId = app.globalData.userInfo.openId;
  var messageDemo = {
    touser: openId,//openId
    template_id: 'PjtLeqq-UeF49r5jr88s27HBzBDobijr6QfiwJwIkPg',//模板消息id,  
    page: 'pages/index/index',//点击详情时跳转的主页
    form_id: formID,//formID
    data: {//下面的keyword*是设置的模板消息的关键词变量  

      "keyword1": {
        "value": "keyword1",
        "color": "#4a4a4a"
      },
      "keyword2": {
        "value": "keyword2",
        "color": "#9b9b9b"
      },
      "keyword3": {
        "value": "keyword3",
        "color": "red"
      }
    },
    color: 'red',//颜色
    emphasis_keyword: 'keyword3.DATA'//需要着重显示的关键词
  }
  wx.request({
    url: config.service.sendMsgUrl,
    data: { value: messageDemo, access_token: access_token},
    method: 'POST',
    success: function (res) {
      console.log("push msg");
      console.log(res);
    },
    fail: function (err) { 
      console.log("push err")
      console.log(err);
    }
  });
}
module.exports = { pushMsg: pushMsg }
四、推送消息。

  

const request = require('../tools/ih_request');
var conf = require('../config.js')
module.exports = async (ctx, next) => {
  var body = ctx.request.body.value
await request.postJson({
  url: 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + ctx.request.body.access_token,
  body: body,
  success: function (res) {
    ctx.body = {
      result: res
    }
    console.log('res=',res);
  },
  error: function (err) {
    ctx.body = {
      result: err
    }
    console.log(err);
  }
});}

ih_request.js

const request = require('request');
var ih_request = {};
module.exports = ih_request;
ih_request.postJson = async function (option) {
  var res = await request({
    url: option.url,
    method: 'post',
    headers: {
      'content-type': 'application/json'
    },
    body: JSON.stringify(option.body),
  }, function (err, res, body) {
    res ? option.success(body) : option.error(res.msg);
    console.log('MSGresult=', body);
  });
}


  • 8
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值