微信小程序云开发定时推送订阅消息

1.找到自己想要的模板

(1)点击订阅消息

(2)点击公共模板库,然后找到想要选用的模板,点击选用。


(3)在我的模板里面,复制模板id。

如果找不到想要用的模板,可以在公共模板的最后一页,点击下图中圈出来的,去申请自己想要的模板。

2.代码部分

(1)云函数部分的代码

config.json
云函数配置文件,用于定时提醒,具体规则可以去参考一下微信的定时触发器

"permissions": {"openapi": ["uniformMessage.send"] //使用subscribeMessage.send},"triggers": [{"name": "myTrigger","type": "timer","config": "0 0 9 * * * *" }]

index.js

// 云函数入口文件
const cloud = require('wx-server-sdk')cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境const db = cloud.database()
const _ = db.command
const $ = db.command.aggregate
// 云函数入口函数
exports.main = async (event, context) => {try {//订餐提醒const userList =await db.collection('user').where({order_type: _.not(_.eq('a'))}).get()console.log("userList",userList)console.log("time",timeStampToTime(new Date()))//循环消息队列const sendPromises=userList.data.map(async user=>{try {// 发送订阅消息await cloud.openapi.subscribeMessage.send({"touser": user.openId, //要推送给那个用户"page": 'pages/login/login',"data": {//推送的内容"date2": {"value": timeStampToTime(new Date())},"phrase3": {"value": user.user_name},"thing4": {"value": '如果已经点餐,请忽略该消息,点击查看详情'},"thing5": {"value": '如果已经点餐,请忽略该消息,点击查看详情'}},"templateId": '模板id',//模板id"miniprogramState": 'trial' //developer为开发版;trial为体验版;formal为正式版;默认为正式版})} catch (err) {console.log(err)return err}return Promise.all(sendPromises)})} catch(err){console.log(err)return err}
}
//转换成消息模版所需要的格式,date 年/月/日 时:分:秒
function timeStampToTime(date) {const formatNumber = n => {n = n.toString()return n[1] ? n : `0${n}`}const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const hour = date.getHours()const minute = date.getMinutes()const second = date.getSeconds()return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

(2)页面逻辑层js代码

这个事件触发需要与按钮绑定,不能再页面初次渲染时(也就是onLoad函数)进行触发。

 //去食堂管理页面toCanteen(e) {//查询用户是否选择了一只接收了订阅消息wx.getSetting({withSubscriptions:true,success:res=>{console.log(res.subscriptionsSetting)console.log(!res.subscriptionsSetting.mainSwitch)console.log(res.subscriptionsSetting.itemSettings)// 订阅消息里面的itemSettings属性是否为空if(res.subscriptionsSetting.itemSettings==null){this.requestSubscribeMessage()}else{//关于用户对提醒模版id的授权是否为接受if (res.subscriptionsSetting.itemSettings['模板id']=='accept')  {console.log('用户点击了“总是保持以上,不再询问”')} else {console.log('用户没有点击“总是保持以上,不再询问”,每次都会调起授权页面')this.requestSubscribeMessage()}}}})wx.navigateTo({url: '/pages/canteen/canteen'})},//获取订阅消息授权requestSubscribeMessage(){wx.requestSubscribeMessage({tmplIds: ['模板id'],success:res=>{console.log("订阅消息",res)},fail:err=>{this.showtoast('出错了')console.log("订阅消息失败",err)}})}

自此,定时推送订阅消息就实现了。

微信小程序云开发定时推送订阅消息相关推荐

  1. 微信小程序通过服务号推送模板消息

    前言 公司要做一款新的微信小程序,因为业务需求要加入消息推送.因为之前APP是通过服务号推送给用户消息的,所以微信小程序要做消息推送也是首先想到了通过服务号推送.事实上在使用过程中服务号推送还是非常好 ...

  2. mpvue下小程序云开发实现余额提现订阅消息提醒

    在小程序模板消息下线的日子记一下订阅消息的使用 博主最近做的小程序涉及到余额提现的功能,需要在提现过程中推送给用户相应类型的消息.下面介绍下实现的流程. 获取模板ID 订阅消息发送云函数添加 获取下发 ...

  3. 【系】微信小程序云开发实战坚果商城-扩展篇

    第 5-1 课:扩展篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小程 ...

  4. 关于微信小程序云开发---实现客服自动回复图片例子

    关于微信小程序云开发-实现客服自动回复例子 微信自带的云开发功能使前端工程师可以独立的开发出一款小程序,微信自带的云开发. 首先和开发其他平台的项目一样先看官方文档. 微信小程序开放文档 一. 什么是 ...

  5. 微信小程序云开发 · 从0搭建商业级校园跑腿平台(已开源)

    微信小程序云开发  ·  从零搭建商业级校园跑腿平台 小秃僧 新生代农民工,一枚准毕业的大四学生,热爱前端开发,做个有态度.有思想.有价值的公众号. 好久不更新了,再更新已是打工人! 我将分享用云开发 ...

  6. 微信小程序云开发新手教程——关于多人云开发和git版本管理

    多人团队开发微信小程序项目时,如何更好的进行团队协作是一个关键问题.接下来的这篇文章里,主要以项目的管理者和项目参与者两种身份,介绍了云开发初始环境的配置的具体方法,以及通过git进行团队的版本管理. ...

  7. 垃圾分类微信小程序——云开发+CMS+微应用+百度智能云图片识别

    功能列表 1.0.0版本: 三个版本,一个APPID,登录页选择版本 登录,openid判断 社区居民用户注册,一房一主 工作/清洁人员账号绑定,一人一号,一号一人 用户首页,直接展示搜索功能,包括图 ...

  8. 校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程

    校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程 完整代码下载地址:校园二手书商城源代码基于微信小程序云开发 欢迎使用,下面是配置教程 长话短说,下面直接说配置流程 一.小程序 ...

  9. 记录我的第一篇博客,【新手向】微信小程序云开发

    [新手向]微信小程序云开发 前言 为什么要写博客 微信小程序开发 小程序云开发概述 准备 知识储备 组件库 开源框架 环境搭建 最后 前言 偶然看到自己以前写的代码 em-这一坨什么鬼,哈哈哈 所以我 ...

最新文章

  1. Mysql8.0 3306端口无法远程连接
  2. java空格 逗号_Java将字符串中的空格换为逗号
  3. java quartz CronScheduleBuilder
  4. 利尔达NB-IOT的PSM和eDRX低功耗模式笔记
  5. C# 通过 AppDomain 应用程序域实现程序集动态卸载或加载
  6. 解决在嵌入式平台上无法进行字符编码的问题
  7. python输出语句中引用多个变量
  8. 计算机病毒是指______.,计算机病毒是指
  9. pcsx2 模拟器 玩 psp 游戏 龙珠z:传奇
  10. 一招解决网页文字无法复制
  11. Maccms8.x 命令执行漏洞分析
  12. 财务报表分析是在分析什么?如何选择财务报表分析工具
  13. 彼得林奇——如何看待股市大跌
  14. 蒟蒻的第一次豆瓣读书爬虫实践
  15. 羽绒枕头行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  16. 电大计算机网络考试,电大计算机组网技术试题及答案|2017电大统考计算机试题及答案...
  17. 好用的记事本app推荐 记事待办极简便签
  18. NK-RTU980 USB bulk传输
  19. Hadoop MapReduce Splits 切片源码分析及切片机制
  20. <Linux开发>--驱动开发-- 字符设备驱动(3) 过程详细记录

热门文章

  1. git的安装与配置教程-超详细版
  2. 工业poe交换机供电方法
  3. GaussDB 如何启动和关闭数据库的归档模式
  4. 点击事件返回上一页面
  5. 开发游戏的老王博客常见问题总汇(4月16日更新)
  6. 为什么c语言中会引入ASCII,C语言中ASCII码是什么意思?
  7. OpenGL之常用方法整理
  8. 排序---希尔排序实现和性能分析
  9. Verilog HDL设计方法
  10. mysql修改数据库名的方法