具有重复一次行为的 UILocalNotification,如 Messages App
Posted
技术标签:
【中文标题】具有重复一次行为的 UILocalNotification,如 Messages App【英文标题】:UILocalNotification with repeat-once behaviour like in Messages App 【发布时间】:2015-05-05 10:34:14 【问题描述】:我有简单的UILocalNotification
:
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"Message";
notification.alertAction = @"Action";
notification.soundName = UILocalNotificationDefaultSoundName;
notification.category = kCategoryIdentifier;
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
是否可以重复通知一次,例如两分钟后?我想要准确的行为,比如在消息应用中。
我尝试设置通知对象的repeatInterval属性,但是:
每两分钟向用户显示一次通知,不会重复一次 系统向用户显示新通知,而不是重复旧通知。用户看到两条通知,一条带有 2 分钟后的时间戳。这不是我所期望的。
另外,由于第二个原因,我不想安排两个单独的通知。
编辑:在我的应用程序中,发生某事的时间非常重要。因此,在锁定屏幕中,当重复通知时,我希望用户知道这是较早发生的事情,而不是通知到达时发生的事情。因此重复通知应该具有第一次通知的时间戳。
【问题讨论】:
你想要在 2 分钟后重复本地通知 【参考方案1】:是的,你可以设置repeatInterval。
参见文档here
重新安排通知的日历间隔。
SWIFT 声明
var repeatInterval: NSCalendarUnit
OBJECTIVE-C@property(nonatomic) NSCalendarUnit repeatInterval
【讨论】:
如果我错了,请纠正我,但对于 NSCalendarUnitMinute 系统将每分钟重复一次通知,而不是一次。通知的时间戳也会向用户建议这是一个新通知,而不是之前发生的通知,并且由于某种原因会重复。 是的,但是您可以为每个通知的重复计数设置一个计数器,何时会提高,如果 activeNotification 的计数器> 1,则取消它。 谢谢,但时间戳问题对我来说真的很重要。在锁定屏幕中,当我重复通知时,我希望用户知道,这是发生在较早的事情,而不是通知到达时发生的时间。【参考方案2】:试试这个代码
localNotif.timeZone = [NSTimeZone systemTimeZone];
localNotif.alertBody = @"Message";
localNotif.alertAction = @"View";
localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber=1;
NSLog(@"LocalNotif.soundName %@",localNotif.soundName);
for (int i=0; i<20; i++)
localNotif.fireDate = [repeatAlarm dateByAddingTimeInterval:120*i];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
【讨论】:
您创建了 20 个通知。他问如何重复一个以提高 2 次。以上是关于具有重复一次行为的 UILocalNotification,如 Messages App的主要内容,如果未能解决你的问题,请参考以下文章
MS-Access 按具有 count(*) > 1 奇怪行为的列分组?