Все уведомления, исчезающие после открытия одного из них
У меня есть сервер, который отправляет мне push-уведомления и позволяет утверждать, что у меня есть 5 уведомлений на моем телефоне. Если я открою одно из них, все остальные уведомления исчезнут. Я хочу, чтобы только один нажал, чтобы исчезнуть.
Вот как я обрабатываю получение уведомлений:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
if ( application.applicationState == UIApplicationState.Inactive || application.applicationState == UIApplicationState.Background )
{
// navigating user to a view controller
}
application.applicationIconBadgeNumber = 0
}
Ответы
Ответ 1
Установив applicationIconBadgeNumber
на 0
, вы также удалите каждое уведомление из центра уведомлений.
Это также обсуждалось здесь:
Приложение iOS: как очистить уведомления?
Кроме того, невозможно программно удалить одно уведомление, но с iOS8 on ОС будет обрабатывать это для вас, когда пользователь удаляет одно уведомление. Это также обсуждалось здесь:
Удалить одно удаленное уведомление из Центра уведомлений
Ответ 2
Решение состоит в том, чтобы установить для applicationIconBadgeNumber
действительное количество уведомлений, которые пользователь имеет в центре уведомлений. Я сделал функцию для этого:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
Для получения дополнительной информации (например, где вызывать эту функцию) вы можете проверить мой оригинальный ответ здесь: fooobar.com/questions/2421591/...
Ответ 3
Решение состоит в том, чтобы установить для applicationIconBadgeNumber
действительное количество уведомлений, которые пользователь имеет в центре уведомлений. Я сделал функцию для этого:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
Для получения дополнительной информации (например, где вызывать эту функцию) вы можете проверить мой оригинальный ответ здесь: fooobar.com/info/2421591/...