从通知中心删除UILocalNotifications

时间:2012-11-26 17:35:59

标签: objective-c ios xcode uilocalnotification

我正在尝试从通知中心删除通知。 我发现以下代码由另一个stackoverflow用户提供:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];

我尝试将该代码添加到下面的AppDelegate.m

applicationWillEnterForeground

但是每当我点击通知中心的通知时,它都不会在通知中心本身消失。

我做错了什么? 我不能使用“CancelAllNotifications”,因为我将来会预先安排通知。

1 个答案:

答案 0 :(得分:3)

从我的测试中看,除了调用setApplicationIconBadgeNumber:

之外,我们还需要取消现有的本地通知

由于您希望在系统中保留任何即将发布的通知,因此仅进行简单取消显然不起作用。因此我采用的策略是将剩余的通知添加到新数组中,然后将该数组重新设置为scheduledLocalNotifications.的集合。读取集合然后重新设置可能看起来有点奇怪然而,根据文档,设置scheduledLocalNotifications属性首先调用cancelLocalNotification: ...这正是我们想要做的。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
NSArray *notifications = [UIApplication sharedApplication].scheduledLocalNotifications;
[UIApplication sharedApplication].scheduledLocalNotifications = notifications;