每天在特定时间发送Ionic 3本地通知

时间:2018-04-16 15:25:07

标签: angular cordova typescript ionic-framework ionic3

我已使用以下命令将Ionic 3本地通知插件添加到我的项目中:

ionic cordova plugin add cordova-plugin-local-notification
npm install --save @ionic-native/local-notifications

我在构造函数中添加了所有依赖项。

我的代码是:

let year = new Date().getFullYear();
let month = new Date().getMonth();
let day = new Date().getDate();

let time1 = new Date(year, month, day, 10, 00, 0, 0);
let time2 = new Date(year, month, day, 12, 00, 0, 0);

this.localNotifications.schedule([
  {
    id: 1,
    title: 'My first notification',
    text: 'First notification test one',
    trigger: { at: new Date(time1) },
    data: {"id": 1, "name": "Mr. A"}
  },
  {
    id: 2,
    title: 'My Second notification',
    text: 'Second notification on 12 pm',
    trigger: { at: new Date(time2) },
    data: {"id": 2, "name": "Mr. B"}
  }
]);

它适用于当天的应用启动,但我想在指定时间发送每天的通知。

我特别想要本地通知,而不是推送通知。

4 个答案:

答案 0 :(得分:0)

要进行每日重复通知,您需要使用every:"day"(或以分钟为单位的时间间隔:every: 24*60)和firstAt属性,其中包含通知的日期第一次触发。试试这段代码

let year = new Date().getFullYear();
let month = new Date().getMonth();
let day = new Date().getDate();

let time1 = new Date(year, month, day, 10, 00, 0, 0);
let time2 = new Date(year, month, day, 12, 00, 0, 0);

this.localNotifications.schedule([
  {
    id: 1,
    title: 'My first notification',
    text: 'First notification test one',
    firstAt: new Date(time1),
    every: 24*60,
    data: {"id": 1, "name": "Mr. A"}
  },
  {
    id: 2,
    title: 'My Second notification',
    text: 'Second notification on 12 pm',
    firstAt: new Date(time2),
    every: 24*60,
    data: {"id": 2, "name": "Mr. B"}
  }
]);

答案 1 :(得分:0)

要进行每日重复通知,您需要在第一次触发通知的日期上使用every:"day"firstAt属性。

注意:与Ionic 3中的cordova插件不同,firstAt属性需要包装在trigger属性中。您可以在Ionic Local Notification Documentation中找到更多信息。

尝试此代码

let year = new Date().getFullYear();
let month = new Date().getMonth();
let day = new Date().getDate();

let time1 = new Date(year, month, day, 10, 00, 0, 0);
let time2 = new Date(year, month, day, 12, 00, 0, 0);

this.localNotifications.schedule([
  {
    id: 1,
    title: 'My first notification',
    text: 'First notification test one',
    trigger: {firstAt: new Date(time1)},
    every: every: "day"
    data: {"id": 1, "name": "Mr. A"}
  },
  {
    id: 2,
    title: 'My Second notification',
    text: 'Second notification on 12 pm',
    trigger: {firstAt: new Date(time2)}, 
    every: "day",  //"day","hour","minute","week" can be used
    data: {"id": 2, "name": "Mr. B"}
  }
]);

答案 2 :(得分:0)

所以我自己找到了解决方案。这是LocalNotifications程序包的类型文件中的错误。

选项的正确用法如下:

    {
      id: 1,
      title: 'Notification Title',
      text: 'Your notification text',
      foreground: true,
      trigger: {
        every: {
          hour: 8,
          minute: 15
        }
      }
    }

只需进入您的node_modules / @ ionic-native / local-notifications中,找到index.d.ts并找到显示“?”的行:ELocalNotificationTriggerUnit并将其更改为“?”:现在应该可以正常工作了。

答案 3 :(得分:-1)

在他们的代码库中显示(注释),您可以通过执行此操作来实现

this.localNotifications.schedule({
 text: 'Delayed ILocalNotification',
 trigger: {at: new Date(new Date().getTime() + 3600)},
 led: 'FF0000',
 sound: null});

现在,如果您必须每天同时发送通知,则可以:

1-安排十分之一的通知,并在用户每次打开您的应用时进行检查

2-每次用户打开已收到的通知时重新安排通知。