zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    tomcat设置编码utf8
    servlet详细理解
    设置utf8编码问题
    yarn状态机的可视化
    以卵石游戏(杭州电1527)
    Android Studio虚拟机配置虚拟键盘
    linux网络编程--跳水send和recv
    基于redis AE异步网络架构
    谈加班文化
    ios8加入通知栏开始
  • 原文地址:https://www.cnblogs.com/gdragon/p/15423730.html
Copyright © 2011-2022 走看看