Как удалить значок, но не удалить все уведомления?
Если у пользователя установлен стиль оповещения "Баннеры". Они могут получить более 1 уведомления без запроса на их очистку.
Я видел те же самые приложения. Если щелкнуть последнюю версию, и она откроет приложение, удалите только это уведомление и удалите значок;
Если я использую
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
Он очистит все полученные уведомления.
Так как удалить значок, но не удалить все уведомления?
2 ответа
Вот еще один пример должен работать для iOS 11(код в Swift 4.1):
if #available(iOS 11.0, *) {
let content = UNMutableNotificationContent()
content.badge = -1
let request = UNNotificationRequest(identifier: "clearBadge", content: content, trigger: nil)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
} else {
UIApplication.shared.applicationIconBadgeNumber = -1
}
Хорошо, я нахожу ответ в этом
добавить новое уведомление, значок которого -1.
- (void)applicationDidEnterBackground:(UIApplication *)application {
if (iOS11) {
UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
content.badge = @(-1);
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"clearBadge" content:content trigger:nil];
[[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
}];
} else {
UILocalNotification *clearEpisodeNotification = [[UILocalNotification alloc] init];
clearEpisodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
clearEpisodeNotification.timeZone = [NSTimeZone defaultTimeZone];
clearEpisodeNotification.applicationIconBadgeNumber = -1;
[[UIApplication sharedApplication] scheduleLocalNotification:clearEpisodeNotification];
}
}
Тогда значок будет удален, а другие уведомления нет.