微信小程序开发实现消息推送


Posted in Javascript onNovember 18, 2020

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

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

一、准备工作

首先,在微信公众平台开通消息推送功能,并添加消息模板。可以从模板库选择模板也可以创建一个模板,模板添加之后,模板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);
 });
}

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用js实现雪花飘落效果
Aug 26 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
Aug 06 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
jQuery选择器实例应用
Jan 05 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
微信小程序实现获取小程序码和二维码java接口开发
Mar 29 Javascript
express启用https使用小记
May 21 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
Nov 04 Javascript
js获取本日、本周、本月的时间代码
Feb 01 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
Aug 07 Javascript
原生JavaScript实现幻灯片效果
Feb 19 Javascript
k8s node节点重新加入master集群的实现
Feb 22 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 #jQuery
js打开word文档预览操作示例【不是下载】
May 23 #Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 #Javascript
判断js数据类型的函数实例详解
May 23 #Javascript
JS定义函数的几种常用方法小结
May 23 #Javascript
vue-test-utils初使用详解
May 23 #Javascript
了解前端理论:rscss和rsjs
May 23 #Javascript
You might like
一步一步学习PHP(8) php 数组
2010/03/05 PHP
php二维数组转成字符串示例
2014/02/17 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
文档对象模型DOM通俗讲解
2013/11/01 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
Vue中定义全局变量与常量的各种方式详解
2017/08/23 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
创建Django项目图文实例详解
2019/06/06 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
灰雀教学反思
2014/04/28 职场文书
五一口号
2014/06/19 职场文书
师德师风自我评价范文
2014/09/11 职场文书