我正在尝试使用此代码每 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】:UILocalNotification
的 repeatInterval
属于 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 分钟触发一次 如何停止