032-云开发定时器功能
为什么需要这个功能
用于提醒用户,或者是唤醒用户去使用我们的小程序。
实现
每天固定时间推送数据,比如每天的早报,提醒用户有新的话题。
订阅功能肯定是必须的,我们在用户订阅消息的时候将数据存入单独的集合中,然后我们在send
云函数中配置好定时器的定时发送功能,最后就是在云函数中查询哪些用户订阅了数据,最后就是发送数据了。
在config.json
中配置定时器数据:
{
"permissions": {
"openapi": [
"subscribeMessage.send"
]
},
"triggers": [
{
"name": "sendMessagerTimer",
"type": "timer",
"config": "0 0 17,19 * * * *"
}
]
}
在index.js
中发送订阅消息:
关于消息订阅可查看之前的文章
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
const db = cloud.database();
try {
// 从云开发数据库中获取推送的消息
const messages = await db
.collection('t_messages')
.get();
// 循环消息列表
messages.data.map(async message => {
try {
// 发送订阅消息
const result = await cloud.openapi.subscribeMessage.send({
"touser": message.touser,
"page": message.page,
"lang": message.lang,
"data": message.data,
"templateId": message.templateId,
"miniprogramState": message.miniprogramState // 上线后删除,即可为上线版本
});
return result
} catch (e) {
return e;
}
});
} catch (err) {
return err
}
}
end