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

时间:2015-05-14 08:37:08

标签: ios swift push-notification

我有一个服务器向我发送推送通知,让我说我的手机上有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
}

3 个答案:

答案 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的布尔类型。

此处更多信息https://documentation.onesignal.com/docs/badges

答案 2 :(得分:0)

解决方案是将applicationIconBadgeNumber设置为用户在通知中心拥有的实际通知数。我为此做了一个功能:

func updateIconBadge() {
    UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
        DispatchQueue.main.async {
            UIApplication.shared.applicationIconBadgeNumber = notifications.count
        }
    }
}

有关更多信息(例如在何处调用此函数),您可能需要在此处查看我的原始答案:https://stackoverflow.com/a/54296486/8157190