Облачные функции Google не работают по расписанию - PullRequest
0 голосов
/ 04 октября 2018

В приложении, которое я создаю, при создании пользователя я сохраняю метку времени в 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;
    });
  })
});

Журналы печатают один и тот же массив для всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...