使用NSWeekdayCalendarUnit的UILocalNotifications repeatInterval

时间:2011-03-03 20:48:56

标签: uilocalnotification

好的,所以我看到几篇帖子说你不能设置UILocalNotification重复任何多于或少于几个给定选项(每分钟/小时/日/周/月等)。

但是,这些帖子都没有解决将repeatInterval UILocalNotification NSWeekdayCalendarUnit属性设置为NSWeekdayCalendarUnit的问题。

我对所有这些NSDate和NSCalendar的东西都很新,所以我确定我遗漏了一些东西,但我已经阅读了文档,听起来你可以使用NSLocalNotification来制作一个{{ 1}}重复说,如果NSWeekdayCalendarUnit设置为2,3,5,则每周一,周二和周四。

  

NSWeekdayCalendarUnit   指定工作日单位。   对应的值是int。等于kCFCalendarUnitWeekday。工作日单位是数字1到N(公历中N = 7,1表示星期日)。

这不正确吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

是的,你可以。我是这样做的。用户可以选择带有选择器的方案。然后选择以下方法:

- (void)setOneLocalAlarmNotification: (NSDate *)firstFireDate withRepeat: (NSInteger)repeat {

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
    return;
localNotif.fireDate = firstFireDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.repeatCalendar = [NSCalendar currentCalendar];

switch(repeat) {
    case 0: 
        break ;
    case 1: 
        localNotif.repeatInterval = kCFCalendarUnitDay;
        break;
    case 2: 
        localNotif.repeatInterval = kCFCalendarUnitWeekday;
        break;
    default: 
        break;
}

// Notification details
localNotif.alertBody = @"Message?";
// Set the action button
localNotif.alertAction = @"Yes";

localNotif.soundName = @"glas.caf"; //UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 1;

// Specify custom data for the notification
    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"Alarm" forKey:@"type"];
   localNotif.userInfo = infoDict;

// Schedule the notification
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release]
}