微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在日期前两天安排本地通知由用户选择

如何解决在日期前两天安排本地通知由用户选择

我有一个使用Ionic 3编码的应用程序,该应用程序必须记录事件的日期,然后在事件发生前2天和事件发生前一天(通过本地通知)提醒用户。 当我运行下面的代码时,我没有收到任何错误,但是当我尝试使用this.localnotifications.getAll();列出所有已注册通知时,也看不到我的通知

我使用以下命令获取日期:<ion-datetime displayFormat="DD MMM YYYY à HH:mm" pickerFormat="D MMMM YYYY HH:mm" [(ngModel)]="myDate" name="tokoss"></ion-datetime>

然后我也创建通知

myDate : Date ;
setNotification(){
    var date = new Date(this.myDate);
    date.setDate(date.getDay()-2); //back for 2 days
    console.log(date);
    this.localnotifications.schedule({
      id: 1,text: 'Single Local Notification 2 days',trigger: { at: new Date(date) },data: { secret: 'secret' }
    });
  }

如何解决此问题

解决方法

谢谢@ – Delwyn Pinto的回答。在另一个论坛上,我被建议使用date-fns来操纵日期,我确实做到了,而且似乎可行,除了在运行代码时遇到以下问题:

  • 第一条通知和第二条通知不在计划的时间运行(第一条通知是上午6点,第二条通知是上午8点),但与第3条通知同时运行(计划为下午3点)
  • 当其从“ twoDayAgo”更改为oneDayAgo时,所有oneDayAgo通知均与第一个通知同时执行(计划在6h) 请问我的代码有什么问题?

我的代码:

 let date = new Date(this.myDate);
let twoDaysAgo = addDays(date,-2);
let oneDaysAgo = addDays(date,-1);

// 2 days ago first notification
twoDaysAgo.setHours(6,0);
this.localNotifications.schedule({
      id: 1,text: 'local notification 2 days ago 6h',trigger: { at: twoDaysAgo },data: { secret: 'secret' }
    });

    // 2 days ago 2nd notification
    twoDaysAgo.setHours(8,0);
this.localNotifications.schedule({
      id: 2,text: 'local notification 2 days ago 8h',data: { secret: 'secret' }
    });

    // 2 days ago 3rd notification
    twoDaysAgo.setHours(15,0);
this.localNotifications.schedule({
      id: 3,text: 'local notification 2 days ago 15h',data: { secret: 'secret' }
    });
    // 1 days ago 1st notification
  oneDaysAgo.setHours(6,0);
  this.localNotifications.schedule({
    id: 4,text: 'Local notification one day ago 6h',trigger: { at: oneDaysAgo },data: { secret: 'secret' }
  });

  // 1 days ago 2nd notification
  oneDaysAgo.setHours(8,0);
  this.localNotifications.schedule({
    id: 5,text: 'Local notification one day ago 8h',data: { secret: 'secret' }
  });
  // 1 days ago 3rd notification
  oneDaysAgo.setHours(15,0);
  this.localNotifications.schedule({
    id: 6,text: 'Local notification one day ago 15h',data: { secret: 'secret' }
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。