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


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 相关文章推荐
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
js随机生成26个大小写字母
Feb 12 Javascript
浅析vue数据绑定
Jan 17 Javascript
Vue 2.0 服务端渲染入门介绍
Mar 29 Javascript
js实现rem自动匹配计算font-size的示例
Nov 18 Javascript
vue 注册组件的使用详解
May 05 Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 Javascript
Vue监听页面刷新和关闭功能
Jun 20 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
Oct 25 Javascript
React学习之受控组件与数据共享实例分析
Jan 06 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
javascript表单正则应用
2017/02/04 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
element-ui组件中input等的change事件中传递自定义参数
2019/05/22 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
Python3读取zip文件信息的方法
2015/05/22 Python
python安装教程
2018/02/28 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
PyTorch基本数据类型(一)
2019/05/22 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
暑期社会实践学生的自我评价
2014/01/09 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis