我已在我的应用中启动并运行FCM,我可以根据存储在用户个人资料中的fcmToken通过Firebase控制台向所有用户或特定用户发送通知。
我的应用程序允许用户提交每日更新,回答一系列有关其健康状况的问题。每当用户执行此操作时,我将子路径/ userId / lastDailyUpdate更新为yyyyMMdd(即20170805)形式的日期作为整数。我执行此操作,以便在用户已在特定日期提交输入时隐藏问题并提交视图。
我现在要做的是在晚上8点将Firebase云功能与每日cron作业结合使用,以检查用户是否已提交答案。简而言之,如果当前日期(yyyyMMdd为Int)大于/ userId / lastDailyUpdate中存储的日期Int发送通知。
我可以使用云功能发送通知,但找不到循环浏览数据库中所有用户并检查其lastDailyUpdate值的方法。到目前为止我的代码:
let functions = require('firebase-functions');
let admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendDailyReminder = functions.https.onRequest((request, response) => {
response.send("Daily Reminder Function");
let userId = "P3fPW62PaxX45Ccvo4OiyOk6fJC2"
// See the "Defining the message payload" section below for details
// on how to define a message payload.
var payload = {
notification: {
title: 'Had a healthy day?',
body: 'Submit you stats before you go to sleep.',
badge: '1',
sound: 'default'
}
};
return admin.database().ref('/users/P3fPW62PaxX45Ccvo4OiyOk6fJC2/fcmToken').once('value').then(allToken => {
if (allToken.val()) {
const token = Object.keys(allToken.val());
return admin.messaging().sendToDevice(token, payload).then(response => {
});
}
});
});
以上代码有效,但您可以想象我想发送给多个用户:)
lastDailyUpdate值的路径(对于用户' P3fPW62PaxX45Ccvo4OiyOk6fJC2'在本例中)是:
'/users/P3fPW62PaxX45Ccvo4OiyOk6fJC2/lastDailyUpdate'
我只是编程了一会儿,我知道很多JS,但这些功能让我感到困惑。有没有人可以帮助我朝着正确的方向前进?
我正在考虑触发for循环的HTTP请求,该循环检查lastDailyInput值,如果小于当前日期触发器,则发送通知。
任何有关代码或提示的帮助(可能在Express / Node.js的速成课程中)都将非常感激。