赞
踩
微信云开发通过定时任务,对用户进行消息推送。
wx.requestSubscribeMessage({ tmplIds: ['刚刚选用的模板的ID'], success: (res) => { console.log(res); // 在res中,你的模板ID为key。 if(res.你的模板ID == 'accept'){ wx.showToast({ title: '已开启提醒', icon: 'success', duration: 2000 }); }else{ wx.showToast({ title: '开启失败', icon: 'error', duration: 2000 }); } }, fail: (err) => { console.log("err", err) } })
// 云函数入口文件 const updateTask = require('./updateTask/index'); const cloud = require('wx-server-sdk') cloud.init({/* */ env: cloud.DYNAMIC_CURRENT_ENV }); const getNowDate = (sameDay) => { var date = new Date(); if (sameDay == '2') { date.setTime(date.getTime() + 1 * 24 * 60 * 60 * 1000); } //此处添加是否为前一天推送的判断 var seperator1 = "-"; //格式分隔符 var year = date.getFullYear(); //获取完整的年份(4位) var month = date.getMonth() + 1; //获取当前月份(0-11,0代表1月) var strDate = date.getDate(); // 获取当前日(1-31) if (month >= 1 && month <= 9) month = '0' + month; // 如果月份是个位数,在前面补0 if (strDate >= 0 && strDate <= 9) strDate = '0' + strDate; // 如果日是个位数,在前面补0 let currentdate = year + seperator1 + month + seperator1 + strDate; return currentdate; } // 云函数入口函数 exports.main = async (event, context) => { //获取需要推送的纪念日 var userList = await updateTask.getJinianri(event, context); if (userList.data && userList.data.length > 0) { userList = userList.data; var needPushUserList = []; for (var p = 0; p < userList.length; p++) { let nowDate = getNowDate(userList[p].sameDay); nowDate = nowDate.slice(5); let startTime = userList[p].startTime; startTime = startTime.slice(5); if (startTime == nowDate) { //判断当前日期是否和用户设置的日期相等,如果相等,则推送提醒给该用户 needPushUserList.push(userList[p]); } } // return needPushUserList2; var result2 = await updateTask.testFun(needPushUserList, context); return result2; } else { return userList; } }
const testFun = async (event, context) => { return new Promise((resolve, reject) => { //数据库查询结果 var msgArr = event; // 循环消息列表 const sendPromises = msgArr.map(async msgData => { try { // 发送订阅消息 // 其中data中的字段 thing1,time2,thing3是根据在后台选用的模板来设置的。参照下方图片 await cloud.openapi.subscribeMessage.send({ "touser": msgData.openId, "templateId": '你的模板ID', "page": 'pages/home/index', "data": { "thing1": { "value": msgData.sameDay == '2'? '明天是【' + msgData.typeName+'】' : '今天是【' + msgData.typeName+'】' }, "time2": { "value": msgData.startTime }, "thing3": { "value": msgData.remarks }, }, // "miniprogramState": 'trial', "lang": 'zh_CN', }); //推送后,根据ID修改纪念日状态 return db.collection('jinianri').doc(msgData._id).update({ data: { pushState: 2, //设置为已推送 pushTime:+new Date() }, }) } catch (e) { return '推送失败'; } }) // return Promise.all(sendPromises); resolve(msgArr); }); };
模板详情
5. 通过定时任务,触发推送函数。
其中config代表推送的具体时间和频次,类型为cron 表达式,可通过在线网址生成。cron在线生成
不用纠结为什么会自动执行这个定时任务。因为:
微信搜索 “生活纪念日助手”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。