打开其中一个后,所有通知都会消失
All notifications disappearing after opening one of them
我有一台向我发送推送通知的服务器,假设我的 phone 上有 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
}
通过将 applicationIconBadgeNumber
设置为 0
,您还可以从通知中心删除所有通知。
这里也讨论过这个问题:
iOS application: how to clear notifications?
此外,无法以编程方式删除单个通知,但从 iOS8 开始,当用户点击单个通知时,OS 会为您处理此操作。这也在这里讨论过:
Remove single remote notification from Notification Center
解决方法是将applicationIconBadgeNumber
设置为用户在通知中心的实际通知数量。我为此做了一个函数:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
有关更多信息(例如在哪里调用此函数),您可能需要在此处查看我的原始答案:
如果您在您的应用中使用 OneSignal SDK,并且您遇到打开后通知消失的问题,您必须将密钥 OneSignal_disable_badge_clearing
添加到 Info.plist
文件在 Xcode 中,布尔类型设置为 YES
。
我有一台向我发送推送通知的服务器,假设我的 phone 上有 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
}
通过将 applicationIconBadgeNumber
设置为 0
,您还可以从通知中心删除所有通知。
这里也讨论过这个问题: iOS application: how to clear notifications?
此外,无法以编程方式删除单个通知,但从 iOS8 开始,当用户点击单个通知时,OS 会为您处理此操作。这也在这里讨论过: Remove single remote notification from Notification Center
解决方法是将applicationIconBadgeNumber
设置为用户在通知中心的实际通知数量。我为此做了一个函数:
func updateIconBadge() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
DispatchQueue.main.async {
UIApplication.shared.applicationIconBadgeNumber = notifications.count
}
}
}
有关更多信息(例如在哪里调用此函数),您可能需要在此处查看我的原始答案:
如果您在您的应用中使用 OneSignal SDK,并且您遇到打开后通知消失的问题,您必须将密钥 OneSignal_disable_badge_clearing
添加到 Info.plist
文件在 Xcode 中,布尔类型设置为 YES
。