В приложении, которое я создаю, при создании пользователя я сохраняю метку времени в users/{userid}/timestamp
.То, чего я пытаюсь добиться, это отправить пользователю уведомление FCM, когда через 24, 48, 72 часа после создания пользователя.
Что у меня есть:
exports.hourlyTick = functions.https.onRequest((req, res) => {
let now = Date.now();
let onedaycutoff = now - 24 * 60 * 60 * 1000;
let twodaycutoff = now - 48 * 60 * 60 * 1000;
let threedaycutoff = now - 72 * 60 * 60 * 1000;
let onedaycutoffpromise = admin.database().ref(`Users`).orderByChild('timestamp').endAt(onedaycutoff).once('value');
let twodaycutoffpromise = admin.database().ref(`Users`).orderByChild('timestamp').endAt(twodaycutoff).once('value');
let threedaycutoffpromise = admin.database().ref(`Users`).orderByChild('timestamp').endAt(threedaycutoff).once('value');
return Promise.all([onedaycutoffpromise, twodaycutoffpromise, threedaycutoffpromise]).then(r => {
const onedaycutofftokens = r[0];
const twodaycutofftokens = r[1];
const threedaycutofftokens = r[2];
const onedayTokens = [];
const twodayTokens = [];
const threedayTokens = [];
onedaycutofftokens.forEach(p => {
if (p.child("registrationToken").val()) {
onedayTokens.push(p.child("registrationToken").val());
}
});
twodaycutofftokens.forEach(p => {
if (p.child("registrationToken").val()) {
twodayTokens.push(p.child("registrationToken").val());
}
});
threedaycutofftokens.forEach(p => {
if (p.child("registrationToken").val()) {
threedayTokens.push(p.child("registrationToken").val());
}
});
console.log(onedayTokens);
console.log(twodayTokens);
console.log(threedayTokens);
return Promise.all([SendNotification(4, onedayTokens), SendNotification(5, twodayTokens), SendNotification(6, threedayTokens)]).then((result) => {
res.send('Notifications sent');
return null;
});
})
});
Журналы печатают один и тот же массив для всех.