我尝试每周一重复本地通知。我发现localNotification.repeatInterval = kCFCalendarUnitWeekOfYear;
但我不确定它是否有效。如何在将来显示所有本地通知时间?
[[UIApplication sharedApplication] cancelAllLocalNotifications];
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
[gregorian setLocale:[NSLocale currentLocale]];
NSDateComponents *nowComponents = [gregorian components:NSCalendarUnitYear | NSCalendarUnitWeekOfYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:today];
[nowComponents setHour:18];
[nowComponents setMinute:05];
[nowComponents setSecond:00];
[nowComponents setWeekday:2];
NSDate * notificationDate = [gregorian dateFromComponents:nowComponents];
UILocalNotification* localNotification = [[UILocalNotification alloc] init];
//localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
localNotification.fireDate = notificationDate;
localNotification.repeatInterval = kCFCalendarUnitWeekOfYear;
localNotification.soundName = @"localNotification_Sound.mp3";
localNotification.alertBody = @"Message?";
localNotification.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
答案 0 :(得分:3)
我在自己的模拟器中试用了你的代码,它似乎工作正常。
我建议做的唯一改变是:
localNotification.repeatInterval = NSCalendarUnitWeekOfYear;
我找到了in this very related question。
此外,如果您使用以下行,编译器会抱怨:
[nowComponents setMinute:08];
(因为它将其解释为八进制数而不是整数)。不要使用前导零。做类似的事情:
[nowComponents setMinute:8];
不要忘记ask your user to enable notifications,否则他们就不会出现。