我有一个应用程序,每天都会提醒用户有一个待办事项,但我不需要提醒他们是否已经这样做了。
我解决问题的方法是创建一个随机时间每天启动的本地通知。当一个todo项目已经完成当天,我将当地通知日重新安排到明天,取消它并创建一个明天的新日期。但是这个解决方案并不起作用。看起来,当您指定每天触发本地通知(repearInterval = NSDayCalendarUnit)时,它不会遵守fireDate day属性。
这是我的代码:
/*** notification is created like this ***/
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [self randomHourMinFromDate:[NSDate date]];
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertBody = @"A todo item is due!";
localNotif.alertAction = @"View Item";
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.repeatInterval = NSDayCalendarUnit;
/*** some other part of the code ***/
NSArray *scheduledNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications];
UILocalNotification *notification = [scheduledNotifications firstObject];
// adds 1 day to notification fireDate
NSDate *newFireDate = [notification.fireData dateByAddingTimeInterval:60*60*24*1];
[[UIApplication sharedApplication] cancelLocalNotification:notification];
notification.fireDate = newFireDate;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
你能告诉我我做错了什么吗?或者推荐一个更好的解决方案? TIA!
答案 0 :(得分:0)
我有个主意。当todo项目已在当天完成时,取消通知并创建一个新通知。将sparkate设置为当前日期,并设置dateByAddingTimeInterval:60 * 60 * 24.
localNotification.fireDate = [CurrentDate dateByAddingTimeInterval:60*60*24];
愿这可行。