我正在尝试使用此代码每 5 秒触发一次本地通知

Posted

技术标签:

【中文标题】我正在尝试使用此代码每 5 秒触发一次本地通知【英文标题】:I am trying to fire local notification every 5 seconds using this code 【发布时间】:2014-01-24 09:04:48 【问题描述】:
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
if (localNotification == nil)
    return;
//localNotification.fireDate = [NSDate dateWithTimeInterval:timeInterval sinceDate:now];
localNotification.fireDate = [NSDate date];
localNotification.repeatInterval = 5*NSSecondCalendarUnit;
localNotification.alertBody = @"Your alert message";
[[UIApplication sharedApplication] cancelAllLocalNotifications];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

此代码在前 5 秒后生成通知,然后返回到 NSMinuteCalendarUnit,我一直在尝试解决此问题,但没有任何帮助。

我想每 5 秒设置一次通知,然后它应该触发它,直到我强行想要停止它。

有人可以帮忙吗?

【问题讨论】:

看看这个帖子:***.com/questions/13644357/… 【参考方案1】:

UILocalNotificationrepeatInterval 属于 NSCalendarUnit 类型,而不是时间间隔。您只能从 NSCalendarUnit 枚举中为其分配一个值。

如果您想每 5 秒触发一次本地通知,则需要设置多个通知。

【讨论】:

【参考方案2】:

这里是代码。 每 5 分钟使用一次,而不是每周使用一次。

-(void)setLocalNotificationwithOptions :(NSDictionary *)launchOptions

     UILocalNotification *localNoti = [launchOptions  objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNoti) 
    NSLog(@"Notification:%@",localNoti);


[[UIApplication sharedApplication] cancelAllLocalNotifications];

NSCalendar *gregCalendar12 = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *dateComponent12 = [gregCalendar12 components:NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]];


[dateComponent12 setWeekday:7];
[dateComponent12 setHour:14];
[dateComponent12 setMinute:46];

UILocalNotification *notification12 = [[UILocalNotification alloc]init];
[notification12 setAlertBody:@"ENJOY YOUR WEEKEND!"];
[notification12 setFireDate:[gregCalendar12 dateFromComponents:dateComponent12]];
notification12.repeatInterval = NSMinuteCalendarUnit;
[notification12 setTimeZone:[NSTimeZone defaultTimeZone]];
[[UIApplication sharedApplication] scheduleLocalNotification:notification12];

希望这对您有所帮助。谢谢。。

【讨论】:

【参考方案3】:

如果您想每 5 秒重复一次计时器, UILocalNotification 允许每个声音最多 30 秒。 所以在你的目录中放一个 30 秒的声音, 然后

[[UIApplication sharedApplication] cancelAllLocalNotifications];
NSDate *date = "set your notification date"
for (int i = 0; i < 10; i++)
    NSDate *repeatTime = [date dateByAddingTimeInterval:300 * i];
    notification.fireDate = repeatTime;
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

【讨论】:

以上是关于我正在尝试使用此代码每 5 秒触发一次本地通知的主要内容,如果未能解决你的问题,请参考以下文章

安排每小时重复本地通知的问题

本地通知不会消失

无法触发本地通知

本地通知 UNTimeIntervalNotificationTrigger triggerWithTimeInterval 每 1 分钟触发一次 如何停止

iOS 10:如何在特定日期触发后重复本地通知?

本地通知 - 重复间隔/自定义时间不起作用