Fire a notification at a specific day and time every week

后端 未结 2 2031
感情败类
感情败类 2020-12-09 20:41

I want to trigger a UILocalNotification every Sunday at 8PM, however, I\'m having a fire date every day at 8PM.

NSCalendar *calendar = [[NSCalen         


        
相关标签:
2条回答
  • 2020-12-09 20:55

    I have also searched about it. Below code work good for me. Pass the week day value 1 to 7 Sunday to Saturday and notification body with action which you want to fire and specify your date then notification will come on that specific day. Time will automatically set when you set date.

    Hope this help you.

    -(void) weekEndNotificationOnWeekday: (int)weekday :(UILocalNotification *)notification : (NSDate*) alramDate
    {
        NSCalendar *calendar = [NSCalendar currentCalendar];
    
        NSDateComponents *componentsForFireDate = [calendar components:(NSYearCalendarUnit | NSWeekCalendarUnit |  NSHourCalendarUnit | NSMinuteCalendarUnit| NSSecondCalendarUnit | NSWeekdayCalendarUnit) fromDate: alramDate];
        [componentsForFireDate setWeekday: weekday] ; //for fixing Sunday
    //    [componentsForFireDate setHour: 20] ; //for fixing 8PM hour
    //    [componentsForFireDate setMinute:0] ;
    //    [componentsForFireDate setSecond:0] ;
        notification.repeatInterval = NSWeekCalendarUnit;
        notification.fireDate=[calendar dateFromComponents:componentsForFireDate];
        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }
    
    0 讨论(0)
  • 2020-12-09 21:13

    You missed the NSWeekCalendarUnit in the NSDateComponents init function. Add the NSWeekCalendarUnit to it and set the repeatInterval to NSWeekCalendarUnit, then output is

    next fire date = Sunday, November 24, 2013 at 8:00:00 PM  
    

    The code is here:

      NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *now = [NSDate date];
    NSDateComponents *componentsForFireDate = [calendar components:(NSYearCalendarUnit | NSWeekCalendarUnit |  NSHourCalendarUnit | NSMinuteCalendarUnit| NSSecondCalendarUnit | NSWeekdayCalendarUnit) fromDate: now];
    [componentsForFireDate setWeekday: 1] ; //for fixing Sunday
    [componentsForFireDate setHour: 20] ; //for fixing 8PM hour
    [componentsForFireDate setMinute:0] ;
    [componentsForFireDate setSecond:0] ;
    
      //...
      notification.repeatInterval = NSWeekCalendarUnit;
      //...
    
    0 讨论(0)
提交回复
热议问题