我有一个服务器向我发送推送通知,让我说我的手机上有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
}
答案 0 :(得分:16)
通过将applicationIconBadgeNumber
设置为0
,您还会删除通知中心的所有通知。
这里也讨论了这个问题: iOS application: how to clear notifications?
此外,无法以编程方式删除单个通知,但是从iOS8开始,操作系统将在用户点击单个通知时为您处理此问题。这也在这里讨论过: Remove single remote notification from Notification Center
答案 1 :(得分:1)
如果您在应用中使用 OneSignal SDK ,并且在打开通知后出现通知消失的问题,则必须将密钥OneSignal_disable_badge_clearing
添加到Xcode中的Info.plist
文件中,作为设置为YES
的布尔类型。
答案 2 :(得分:0)
解决方案是将applicationIconBadgeNumber
设置为用户在通知中心拥有的实际通知数。我为此做了一个功能:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
有关更多信息(例如在何处调用此函数),您可能需要在此处查看我的原始答案:https://stackoverflow.com/a/54296486/8157190