获取现有 UILocalNotifications 的列表并修改其日期

Posted

技术标签:

【中文标题】获取现有 UILocalNotifications 的列表并修改其日期【英文标题】:Obtaining a list of existing UILocalNotifications and modifying their dates 【发布时间】:2013-07-29 12:52:11 【问题描述】:

我正在尝试安排几个UILocalNotifications,我需要访问已创建的通知。

是否可以创建所有UILocalNotifications 的列表/数组?我可以编辑现有本地通知的触发日期吗?

这是我用于创建本地通知的代码:

 UILocalNotification* localNotification = [[UILocalNotification alloc] init];
 localNotification.fireDate = pickerDate;
 localNotification.alertBody = textFieldName.text;
 localNotification.alertAction = @"Item date expired!";
 localNotification.timeZone = [NSTimeZone defaultTimeZone];
 localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;

【问题讨论】:

【参考方案1】:

您可以使用以下代码获取所有UILocalNotifications

UIApplication* objApp = [UIApplication sharedApplication];
NSArray*    oldNotifications = [objApp scheduledLocalNotifications];

您也可以使用以下代码取消该通知..

if ([oldNotifications count] > 0)
    [objApp cancelAllLocalNotifications];

还可以从下面的链接中查看一个带有UILocalNotification 教程的基本演示

iphone-programming-tutorial-local-notifications

【讨论】:

【参考方案2】:

检索当前通知

NSArray *currentNotifications = [[UIApplication sharedApplication] scheduledLocalNotifications];

编辑该数组的内容(您可能必须先创建一个可变副本),然后使用

[[UIApplication sharedApplication] setScheduledLocalNotifications:myNotifications];

myNotifications 包含旧的待处理通知和您的新通知,它将覆盖旧值,因此通过编辑此数组中 UILocalNotification 对象的 fireDate,您可以更改它们将被触发的日期。

【讨论】:

【参考方案3】:

我想你想要这个。

[[UIApplication sharedApplication] scheduledLocalNotifications]

【讨论】:

【参考方案4】:

是的,您可以从以下语句中获取所有本地通知列表:

    [[UIApplication sharedApplication] scheduledLocalNotifications];

对于编辑,我没有尝试过,但是可以修改通知的触发日期。 但我的建议是,获取通知的所有其他详细信息并删除并重新创建新通知。

谢谢

【讨论】:

以上是关于获取现有 UILocalNotifications 的列表并修改其日期的主要内容,如果未能解决你的问题,请参考以下文章

打开/关闭所有 UILocalNotifications

UILocalNotifications 和 applicationIconBadgeNumber 的良好模式

如何将 UILocalNotifications 添加到数组 [关闭]

UILocalNotifications 在卸载/更新后是不是仍然存在?

检测未确认的 UILocalNotifications

关闭应用程序后禁用 UILocalNotifications