打开其中一个后,所有通知都会消失

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

这里有更多信息https://documentation.onesignal.com/docs/badges