UILocalNotification在特定日期内重复发射

时间:2016-03-17 06:42:06

标签: ios uilocalnotification repeatingalarm

我正在开发报警应用程序,我想做与iOS闹钟应用程序相同的重复报警功能,我们可以选择重复选项作为每周一,每周二,......同样。

  

示例:如果我只选择每周一,每周三和每个   星期五然后是所有即将到来的周一,周三和周五   应该触发相应的警报通知。

我试过了:

  NSCalendar *calendar = [NSCalendar currentCalendar];
  NSDateComponents *componentsForFireDate = [calendar components:(NSCalendarUnitYear | NSCalendarUnitWeekOfYear |  NSCalendarUnitHour | NSCalendarUnitMinute| NSCalendarUnitSecond | NSCalendarUnitWeekday) fromDate: [dictionaryForAlarm objectForKey:kAlarmSnoozeDate]];

 NSArray *arrayForRepeatDays = @[@"2",@"4",@"6"];

 for (NSString *dayOfWeek in arrayForRepeatDays) {

     [componentsForFireDate setDay:[dayOfWeek integerValue]];
     localNotification.repeatInterval =  NSCalendarUnitWeekOfMonth;;

     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

但它在相应的日子里没有起火,为此纠正我

谢谢你的推荐!

1 个答案:

答案 0 :(得分:0)

我认为你需要做这样的代码:

NSCalendar *calendar = [NSCalendar currentCalendar];
  NSDateComponents *componentsForFireDate = [calendar components:(NSCalendarUnitYear | NSCalendarUnitWeekOfYear |  NSCalendarUnitHour | NSCalendarUnitMinute| NSCalendarUnitSecond | NSCalendarUnitWeekday) fromDate: [dictionaryForAlarm objectForKey:kAlarmSnoozeDate]];

 NSArray *arrayForRepeatDays = @[@"2",@"4",@"6"];

 for (NSString *dayOfWeek in arrayForRepeatDays) {

     [componentsForFireDate setWeekday: [dayOfWeek integerValue]] 
     [componentsForFireDate setHour: 10] ; // here you can set hr as per you need
     localNotification.repeatInterval =  NSWeekCalendarUnit;
     localNotification.fireDate=[calendar dateFromComponents:componentsForFireDate];
     [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

我猜这两个就像让这个有效:

[componentsForFireDate setWeekday: [dayOfWeek integerValue]] 
localNotification.repeatInterval =  NSWeekCalendarUnit;