微信小程序订阅消息定时发送消息
微信小程序订阅消息定时发送消息
本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线。
如果觉得我讲的好就可以给我点个赞。也可以加我微信了解详情。
1.我们先要了解什么是订阅消息
而现在小程序支持云开发,使用云函数可以免鉴权。
我们可以使用云开发来做后端的事,所谓一前端统揽全栈已经不是梦了。
一,我们先了解怎么设置点击订阅按钮后马上就发送订阅消息给你的微信
1.先看下图
2.了解完原理后我们来看看代码部分
微信小程序提供了wx.requestSubscribeMessage 接口来发起申请订阅权限界面。
我们先创建一个 subscribe 为名字的云函数, 以下为云函数代码。
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async(event, context) => {const {OPENID} = cloud.getWXContext()try {const result = await cloud.openapi.subscribeMessage.send({touser: OPENID, //要推送给那个用户page: 'pages/home/home', //要跳转到那个小程序页面data: event.data,templateId: event.templateId //模板id})console.log(result)return result} catch (err) {console.log(err)return err}
}
js文件的按钮点击事件
onSubscribe: function (e) {// 获取课程信息 thing1,number2是根据你创建的模板消息的详细内容字段来的const item = { "thing1": { "value": "2021年第三次摸底考试" }, "number2": { "value": this.getnum() } };//模板idlet lessonTmplId = '********************************';// 调用微信 API 申请发送订阅消息wx.requestSubscribeMessage({// 传入订阅消息的模板id,模板 id 可在小程序管理后台申请tmplIds: [lessonTmplId],success(res) {// 申请订阅成功if (res.errMsg === 'requestSubscribeMessage:ok') {// 这里将订阅的课程信息调用云函数存入云开发数据 data: item, templateId: lessonTmplId,wx.cloud.callFunction({name:'subscribe',data:{data:item,templateId: lessonTmplId,}}).then((res) => {console.log(res)wx.showToast({title: '订阅成功',icon: 'success',duration: 2000,});}).catch(() => {wx.showToast({title: '订阅失败',icon: 'none',duration: 2000,});});}},});},})
二.使用云函数做定时器发送定时订阅消息
我们首先创建两个云函数(subscribe,send)send为定时云函数,和一个数据库集合(messages)
subscribe云函数没有很大的区别,
subscribe —>> index.js
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async(event, context) => {try {const result = await cloud.openapi.subscribeMessage.send({touser: event.touser, //要推送给那个用户page: 'pages/home/home', //要跳转到那个小程序页面data: event.data,templateId: event.templateId //模板id})console.log(result)return result} catch (err) {console.log(err)return err}
}
重点是我们需要在这个云函数加上这个,我就是因为这个困惑了一晚上的,不加的话会发送不了
subscribe —>> config.json
{"permissions": {"openapi": ["subscribeMessage.send"]}
}
定时云函数
定时任务有很多用途,譬如数据汇总产生报表数据、数据清理、文件清理等等。
云开发提供了定时触发器功能(triggers),提供了类似unix/Linux 下crontab的触发表达式。
triggers语法如下:
我们再看定时云函数我们先看一张图
主要定时是config字段,通过调用另一个云函数来实现。
我们看看我写的代码:
send —>> index.js
const cloud = require('wx-server-sdk');
cloud.init();
exports.main = async (event, context) => {const db = cloud.database();try {// 从云开发数据库中查询等待发送的消息列表const messages = await db.collection('messages')// 查询条件这里做了简化,只查找了状态为未发送的消息// 在真正的生产环境,可以根据开课日期等条件筛选应该发送哪些消息.where({static:'into_not'}).get();// 循环消息列表const sendPromises = messages.data.map(async message => {try {await cloud.callFunction({name:'subscribe',data:{data:message.data,templateId: message.templateId,touser: message._openid,}});// 发送成功后将消息的状态改为已发送return db.collection('messages').doc(message._id).update({data: {static:'into_yes'},});} catch (e) {return e;}});return Promise.all(sendPromises);} catch (err) {console.log(err);return err;}
};
send —>> config.json
{"permissions": {"openapi": ["subscribeMessage.send"]},"triggers": [{"name": "sendMessagerTimer","type": "timer","config": "0 * * * * * *"}]
}
到这我们就可以实现订阅消息定时发送消息了,我们要改变时间只需改变send —>> config.json中的 “config”: "0 * * * * * * "就行通过上面的介绍来使用
值得注意的是我们这个需要右击上传触发器,这个send属于触发器。所有我们上传时应该使用上传触发器
以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。最后希望大家可以给我一个关注。我会继续创造下去的,谢谢大家。
微信小程序订阅消息定时发送消息相关推荐
- 微信小程序监听服务器发送消息,微信小程序实时聊天WebSocket
本文实例为大家分享了微信小程序实时聊天WebSocket的具体代码,供大家参考,具体内容如下 1.所有监听事件先在onload监听. // pages/index/to_news/to_news.js ...
- 微信小程序订阅消息定时发送功能的实现
2020上半年,微信小程序弃用了模板消息功能,将其与订阅消息功能合并,我们在学习的过程中编写出了一种简单的定时发送订阅消息的功能.我们做的小程序是一个备忘录类型的小程序.最后的定时结果是每天固定一个时 ...
- 微信小程序云开发定时推送订阅消息
微信小程序云开发定时推送订阅消息 1.找到自己想要的模板 (1)点击订阅消息 (2)点击公共模板库,然后找到想要选用的模板,点击选用. (3)在我的模板里面,复制模板id. 如果找不到想要用的模板,可 ...
- 使用Java实现微信小程序订阅消息
首先到微信小程序的官网,选择合适自己的订阅消息模板. 寻找到适合自己的模板之后,记住模板ID,点开详情,记住每个字段id 微信小程序订阅消息官网文档介绍地址:小程序订阅消息 | 微信开放文档 (qq. ...
- uni-app微信小程序订阅消息功能开发(流程讲解篇)
温馨提示 微信小程序中废弃了"模板消息",,微信小程序模板消息 使用场景 首先我们需要明白微信订阅消息使用场景,比如客户点了一份美团外卖客户需要知道当前订单商家是否接单,或订单是否 ...
- 【Node.js】实现微信小程序订阅消息推送功能
实战项目名称:实现微信小程序订阅消息通知 文章目录 一.实战步骤 1. 登录微信小程序管理端,添加订阅消息模板 2. 定义好需要发送的消息 3.获取小程序的access_token 4. 发起请求,向 ...
- uni做微信小程序订阅消息提醒
1,微信开放平台申请 模板ID 2, 前端uni,uni.requestSubscribeMessage 必须是手动点击触发 微信官方文档 第一步 : uni.getSetting 查询下 订阅消息的 ...
- 化繁为简,我用”知晓推送”开发微信小程序订阅消息
知晓云在2019年十月份左右就上线了微信小程序订阅消息这个服务,后来迭代升级,又相继提供了相应的sdk插件,然而这之前,我却没有很认真,花精力去使用这些服务,刚好国庆几天假,我就熬了两个通宵,将这个小 ...
- 微信小程序订阅消息失败
微信小程序订阅消息失败 之前测试微信小程序订阅消息都是正常的,并且支持开发工具的调试,但是同样的方法换到另一个页面通过表单提交触发就没有效果.调试之后发现报错信息,errMsg: "requ ...
最新文章
- C++求从1到n的正整数中1出现的次数
- iOS 滚动图滚动到顶部汇总
- Java: 数据类型
- oracle行级的触发器,Oracle触发器Trigger2行级
- Java中final关键字的几种用法
- 字典-字典的增删改查常用操作
- 《信息学奥赛一本通 提高篇》
- Fedora的systemctl命令详解 Fedora配置IP地址/DNS/Networking
- 收藏 | OpenCV新手入门预处理
- 绿盟面试题事件有疑 大家认清类似事件正规方式
- java regex match 替换_java正则表达式四种常用的处理方式(匹配、分割、替代、获取)...
- 数据可视化详解+代码演练
- 用数字计算机公式表白,爱情数学简单表白公式
- VC MFC 发送模仿键盘消息
- 利用CCS6.1 对MSP432 做factory reset
- 快速创建ppt中的动画效果图。
- 兑换记录html页面,兑换码记录.html
- 那么如何求出这个长轴和短轴呢?于是线性代数就来了
- 【滤波跟踪】基于EKF、时差和频差定位实现目标跟踪附matlab代码
- 如何做一个“实用”的图像数据集