Подтвердить что ты не робот

Могу ли я программно очищать уведомления о своих приложениях от Центра уведомлений iOS 5?

Я хотел бы удалить старые уведомления, которые мое приложение сделало из Центра уведомлений iOS 5. Я могу сделать это? Если да, то как?

4b9b3361

Ответ 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
}