为什么UILocalNotifications不重复?

时间:2016-02-04 09:09:44

标签: ios swift uilocalnotification

我想运行UILocalNotifications并每2分钟重复一次。为此我做了:

std::cout << var

它只运行一次,之后却没有。

我认为这是因为这一行:

let reminderNote: UILocalNotification = UILocalNotification()
reminderNote.fireDate = NSDate(timeIntervalSinceNow: 60 * 2)
reminderNote.repeatInterval = NSCalendarUnit.Hour
reminderNote.alertBody = "some text"
reminderNote.alertAction = "View"

UIApplication.sharedApplication().scheduleLocalNotification(reminderNote)

如何每1.5或2小时重复一次通知?

2 个答案:

答案 0 :(得分:1)

直接你不能。

不幸的是repeatInterval只能设置为TimeUnit,例如HourMinuteSecond等。

例如:假设您希望每2分钟重复一次通知,则需要创建30个每小时重复一次的通知。

答案 1 :(得分:0)

firedate设置通知第一次触发的时间,repeatInterval是通知重复之间的间隔。

不幸的是,您只能安排通知以NSCalendar常量定义的确切时间间隔重复:例如,每分钟,每小时,每天,每月,但不是这些间隔的倍数。

幸运的是,要每2分钟收到一次通知,你可以安排29个通知:一个是现在,一个是2分钟,后一个是2分钟,一个是你的29个通知时间表,并且全部重复每隔一小时。像这样: 因此,问题中的代码会安排从现在起每2分钟(60 * 2秒)触发一次通知,然后每小时重复一次。

UILocalNotification *reminderNote = [[UILocalNotification alloc]init];
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 2];
reminderNote.repeatInterval = NSHourCalendarUnit;
reminderNote.alertBody = @"some text";
reminderNote.alertAction = @"View";
reminderNote.soundName = @"sound.aif";
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote];

reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60];
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote];  

2小时后,您现在设置通知,从现在开始2小时后,从前一个小时开始2小时到11个通知(12 * 2小时)= 24 - 2小时(因为第一个将在当天更改)= 22/2 =需要通过NSDayCalendarUnit在一天的重复间隔设置11个通知。