Я хотел бы удалить старые уведомления, которые мое приложение сделало из Центра уведомлений iOS 5. Я могу сделать это? Если да, то как?
Могу ли я программно очищать уведомления о своих приложениях от Центра уведомлений iOS 5?
Ответ 1
Чтобы удалить уведомления из Центра уведомлений, просто установите номер значка значка в ноль.
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
Это работает только в том случае, если число изменяется, поэтому, если ваше приложение не использует номер значка, который вы должны сначала установить, то reset it.
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
Ответ 2
Более простой метод, который я использую (и не требует значков), относится к reset массиву запланированных локальных уведомлений для себя следующим образом:
UIApplication* application = [UIApplication sharedApplication];
NSArray* scheduledNotifications = [NSArray arrayWithArray:application.scheduledLocalNotifications];
application.scheduledLocalNotifications = scheduledNotifications;
Это означает, что любые запланированные уведомления остаются в силе, а все "старые" уведомления, которые присутствуют в Центре уведомлений, удаляются. Тем не менее, он также имеет ощущение чего-то, что может измениться в будущей версии iOS, поскольку я не видел никакой документации для этого поведения.
Конечно, если вы хотите удалить уведомления all, это просто следующее:
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Ответ 3
Да, вы можете отменить определенные или все локальные уведомления, вызвав
[[UIApplication sharedApplication] cancelLocalNotification:...];
или
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Ответ 4
Для меня он работал только с отправкой локального уведомления только с таким же значком:
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.
Ответ 5
Если вы хотите очистить уведомления в 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
}