问题
Is there a way to clear the remote notification from the notification banner when swiping down from the top of the iPhone screen. I tried setting the badge number to zero:
application.applicationIconBadgeNumber = 0
in delegate didFinishLaunchingWithOptions
, and didReceiveRemoteNotification
, but it did not clear the notifications. Thanks.
回答1:
You need to set the IconBadgeNumber to 0 and cancel the current notifications. I never did in swift but I think the code for it would be as bellow:
application.applicationIconBadgeNumber = 0
application.cancelAllLocalNotifications()
回答2:
In iOS 10, above all solutions are depreciated
'cancelAllLocalNotifications()' was deprecated in iOS 10.0: Use UserNotifications Framework's -[UNUserNotificationCenter removeAllPendingNotificationRequests]
Use the below code to cancel notification and reset Badge count
For iOS 10, Swift 3.0
cancelAllLocalNotifications
deprecated from iOS 10.
@available(iOS, introduced: 4.0, deprecated: 10.0, message: "Use UserNotifications Framework's -[UNUserNotificationCenter removeAllPendingNotificationRequests]") open func cancelAllLocalNotifications()
You will have to add this import statement,
import UserNotifications
Get notification center. And perform the operation like below
application.applicationIconBadgeNumber = 0 // For Clear Badge Counts
let center = UNUserNotificationCenter.current()
center.removeAllDeliveredNotifications() // To remove all delivered notifications
center.removeAllPendingNotificationRequests() // To remove all pending notifications which are not delivered yet but scheduled.
If you want to remove single or multiple specific notifications, you can achieve it by below method.
center.removeDeliveredNotifications(withIdentifiers: ["your notification identifier"])
Hope it helps..!!
回答3:
I have to increment then decrement badge count in order for it to work:
application.applicationIconBadgeNumber = 1
application.applicationIconBadgeNumber = 0
application.cancelAllLocalNotifications()
回答4:
Swift 3
In your AppDelegate.swift
file under didFinishLaunchingWithOptions
add:
application.applicationIconBadgeNumber = 0
On the launch of your app this will remove the iOS badge (red circle at the top right corner of the app icon).
回答5:
any one looking for swift 4 and above code
application.applicationIconBadgeNumber = 0
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
回答6:
In Nov, 2019 below is the working solution for me with Swift 4. First you have to check the device version to clear all notifications but do not need to check to reset badge count.
override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? ) -> Bool {
//--------
application.applicationIconBadgeNumber = 0
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.removeAllDeliveredNotifications()
center.removeAllPendingNotificationRequests()
} else {
application.cancelAllLocalNotifications()
}
//------
}
来源:https://stackoverflow.com/questions/30364315/how-to-clear-the-remote-notification-in-your-app