Send Ionic 3 Local Notification every day at a specific time

前端 未结 4 817
慢半拍i
慢半拍i 2021-01-23 07:05

I have added the Ionic 3 local notification plugin to my project using these commands:

ionic cordova plugin add cordova-plugin-local-notification
npm install --s         


        
相关标签:
4条回答
  • 2021-01-23 07:35

    In order to make a daily repeated notification, you need to use an every:"day" and a firstAt property with the date when the notification will be triggered for the first time.

    Note: Unlike cordova plugin in Ionic 3 firstAt property needs to be wrapped in trigger property. You can find more information in Ionic Local Notification Documentation.

    Try this code

    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"}
      }
    ]);
    
    0 讨论(0)
  • 2021-01-23 07:36

    So I found the solution to this one by myself. It's an error in the typings file of LocalNotifications package.

    The correct usage for the options look like this:

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

    Just go into your node_modules/@ionic-native/local-notifications find the index.d.ts and find the line which says every?: ELocalNotificationTriggerUnit and change it to every?: any; now it should work perfectly.

    0 讨论(0)
  • 2021-01-23 07:47

    In order to make a daily repeated notification, you need to use an every:"day" (or interval in minutes: every: 24*60) and a firstAt property with the date when the notification will be triggered for the first time. Try this code

    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"}
      }
    ]);
    
    0 讨论(0)
  • 2021-01-23 07:57

    In their codebase is shown (commented) that you could achieve this by doing this

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

    Now, if you have to send a notification every day at the same time you could either:

    1 - schedule tenths of notifications and check each time a user opens your app

    2 - re-schedule a notification each time the user opens up a notification already received.

    0 讨论(0)
提交回复
热议问题