第二天不会触发本地通知

时间:2018-03-24 03:29:01

标签: angular typescript ionic3 localnotification ionic-native

我正在使用Local Notifications插件。我需要每天上午10点1分触发通知。我使用下面的代码。当我在同一天在不同的时间进行测试时工作正常。让我们说16H 5Min。但它不会在第二天自动运行。我可以保证所有数据都存在于下一个数据中。但似乎我在这里做错了什么。请告诉我错误在哪里?

Note:即使在同一天,如果我们将应用程序置于大约1+ hours左右的后台模式,这也无效。

注意:在调试模式下工作正常。我不知道问题出在哪里。任何线索?

app.component.ts

constructor(){
 this.initializeApp();
}

  initializeApp() {
        try {
          this.platform.ready().then(() => {
            timer(60000, 60000).subscribe(val => {
             const hours = moment().format("H");
             const minutes = moment().format("m");
          if (hours == '10' && minutes == '1')              
                this.scheduleNotification();
                });
             });
        }
        catch (err) {
          console.log(err);
        }
      }

 scheduleNotification() {
    let firstNotificationTime = new Date();
    firstNotificationTime.setDate(firstNotificationTime.getDate());
    firstNotificationTime.setHours(10);
    firstNotificationTime.setMinutes(1);
    firstNotificationTime.setSeconds(0);
    forEach(this.authenticationProvider.member.projects, (project: Project) => {
      forEach(project.transactions, (transaction: Transaction) => {
        if (transaction.dueOn != null && moment(transaction.dueOn).format('YYYY-MM-DD') == moment().format('YYYY-MM-DD')) {
          const id = random(1, 1000);
          this.localNotifications.schedule({
            id: id,
            title: 'Due Today',
            text: `Payment for ${transaction.category.name}: ${transaction.description} of ${Number(transaction.totalPrice).toLocaleString()} is due today.`,
            data: { transaction: transaction, project: project },
            at: firstNotificationTime,
          });
        }
      });
    });
  }

1 个答案:

答案 0 :(得分:0)

从您的代码编写方式来看,1将永远是今天这段代码运行的日期:

firstNotificationTime

在接下来的几行中,您可以更改小时,分钟和秒,但您永远不会更改日期。您必须将日期提交到第二天才能在第二天收到通知。

除此之外,你可以摆脱这一行:

let firstNotificationTime = new Date();

除了将日期设置为自身之外,别无其他。