每 30 分钟重复间隔有问题

Posted

技术标签:

【中文标题】每 30 分钟重复间隔有问题【英文标题】:Having issue with repeatinterval every 30 minutes 【发布时间】:2012-02-06 15:44:05 【问题描述】:

我正在尝试每 30 分钟重复一次本地通知,但我的代码无法正常工作...如果您能帮助我并找到解决方案,我将不胜感激,这是我的代码:

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

【问题讨论】:

【参考方案1】:

firedate 设置通知第一次触发的时间,repeatInterval 是通知重复之间的间隔。因此,问题中的代码安排了从现在开始 30 分钟(60 * 30 秒)触发的通知,然后每小时重复一次。

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

幸运的是,要每 30 分钟收到一次通知,您只需安排两个通知:一个现在,一个 30 分钟后,并且每小时重复一次。像这样:

UILocalNotification *reminderNote = [[UILocalNotification alloc]init];
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30];
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];

【讨论】:

谢谢,大约每 1 小时或 2 或 3 小时我应该这样吗?例如每 1 小时 :reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60]; reminderNote.repeatInterval = NSHourCalendarUnit; 和第二个开火日期 reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60]; 每1小时,您只需要安排一个通知。只需将我的答案中的代码去掉,然后去掉最后两行。如有必要,更改fireDate,使其与您希望通知触发的第一次相对应。 每 2 小时或 3 小时怎么样?这样对吗 ? :reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 2]; [[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 没有。如果您想每 2(或 3)小时发送一次,则必须安排 12(或 8)个每日通知,它们的初始 fireDates 间隔 2(或 3)小时。请记住,您只能安排每隔一小时或每天(或每分钟、每周等)重复的通知,但这些对您没有用处。要使某些内容有效重复这些单位的倍数,您需要以比您想要的实际间隔的间隔重复多个通知。跨度> 谢谢@yuji。它真的很有帮助:)

以上是关于每 30 分钟重复间隔有问题的主要内容,如果未能解决你的问题,请参考以下文章

每 x 秒/分钟发送和接收重复信息的架构

如何将本地通知重复间隔设置为自定义时间间隔?

C# - 计时器滴答时间比指定的间隔更短,导致重复作业并行运行

UILocalNotification 的自定义重复间隔

在广播接收器中使用 setExact() 重复

iOS 11-每 x 分钟重复一次的用户本地通知