取消所有本地通知和多个本地通知的cancelAllLocalNotifications

3
我有一个场景,我需要安排两个独立的本地通知。其中一个被设置为在午夜十分触发,另一个每小时触发一次。我可以通过在调度通知时设置UserInfo来区分它们。
对于每小时通知,每次通知触发时我都会在Core Data中创建一个项目。但问题是,每次它触发时,我会得到很多额外的项目。
我没有调用以下代码行,因为调用它似乎也会取消我的那个在午夜后触发的通知。
[[UIApplication sharedApplication] cancelAllLocalNotifications];

当我有多个预定的本地通知时,我该如何使用cancelAllLocalNotifications?

2个回答

3

是的,正如你所见。 cancelAllLocalNotifications,顾名思义,将取消一切。是的,你也应该使用userInfo来区分你的通知。

要有选择地管理/删除您的通知,您应该使用scheduledLocalNotifications获取所有已注册的通知,然后遍历它们检查userInfo,然后对不再需要的通知调用cancelLocalNotification


正是我所需要的解释。谷歌一直让我失望! - mix3d

1
自从Swift 3.x推出以来,以下代码是删除所有本地推送通知所必需的:
let notificationCenter : UNUserNotificationCenter = UNUserNotificationCenter.current()
notificationCenter.removeAllPendingNotificationRequests()
notificationCenter.removeAllDeliveredNotifications()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接