【发布时间】:2011-10-14 21:08:59
【问题描述】:
我想从 iOS 5 通知中心删除我的应用发出的旧通知。我可以这样做吗?如果有,怎么做?
【问题讨论】:
标签: ios5
我想从 iOS 5 通知中心删除我的应用发出的旧通知。我可以这样做吗?如果有,怎么做?
【问题讨论】:
标签: ios5
要从通知中心删除通知,只需将您的图标徽章编号设置为零。
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
这仅在数字更改时有效,因此如果您的应用不使用您必须首先设置的徽章编号,然后重置它。
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
【讨论】:
[UIApplication sharedApplication].applicationIconBadgeNumber = 1; [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
我使用的一种更直接的方法(不需要徽章)是将计划的本地通知数组重置为自身,如下所示:
UIApplication* application = [UIApplication sharedApplication];
NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
application.scheduledLocalNotifications = scheduledNotifications;
这意味着所有计划的通知仍然有效,而通知中心中存在的所有“旧”通知都将被删除。但是,它也让人感觉在未来的 iOS 版本中可能会发生一些变化,因为我还没有看到任何关于这种行为的文档。
当然,如果您想删除所有通知,只需以下内容:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
【讨论】:
是的,您可以通过调用取消特定或所有本地通知
[[UIApplication sharedApplication] cancelLocalNotification:...];
或
[[UIApplication sharedApplication] cancelAllLocalNotifications];
【讨论】:
如果你想在 swift 和 iOS 10.0 中清除通知
import UserNotifications
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.
center.removeAllDeliveredNotifications() // To remove all delivered notifications
}
【讨论】:
对我来说,它只适用于发送只有这样一个徽章的本地通知:
if([UIApplication sharedApplication].applicationIconBadgeNumber == 0) {
UILocalNotification *singleLocalPush = [[UILocalNotification alloc] init];
singleLocalPush.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
singleLocalPush.hasAction = NO;
singleLocalPush.applicationIconBadgeNumber = 1;
[[UIApplication sharedApplication] scheduleLocalNotification:singleLocalPush];
[singleLocalPush release];
} else {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
在方法中
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
我可以再次将徽章设置为 0。
【讨论】: