How to clear the remote notification in your app?

前端 未结 8 1836
青春惊慌失措
青春惊慌失措 2021-02-04 03:01

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:

相关标签:
8条回答
  • 2021-02-04 03:16

    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()
    

    Swift 5

    UNUserNotificationCenter.current().removeAllDeliveredNotifications()
    
    0 讨论(0)
  • 2021-02-04 03:20

    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).

    0 讨论(0)
  • 2021-02-04 03:22

    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()    
      }        
    
      //------
    }
    
    0 讨论(0)
  • 2021-02-04 03:30

    I have to increment then decrement badge count in order for it to work:

    application.applicationIconBadgeNumber = 1
    application.applicationIconBadgeNumber = 0
    application.cancelAllLocalNotifications()
    
    0 讨论(0)
  • 2021-02-04 03:30

    This for scenario when the app is forcefully terminated by the user :

    First of all send nonzero badge when you want to send Birthday reminders notifications to the users via push notifications , For example :

     {
      "aps": {
        "alert": {
          "title": "Hey! Urgent Reminder",
          "body": "Do not forget my wife SURPRISE BIRTHDAY PARTY"
        },
        "badge": 1
      }
    } 
    

    After that , When there is no need of showing notifications in the device , you can send silent notification with zero badge that will clear badge and notifications even if app is forcefully terminated by the user but didReceiveRemoteNotification will not called because app is terminated. payload for silent push notification :

     {
       "aps" : {
          "content-available" : 1,
            "badge" : 0,
            "Priority" : 10
       }
    }
    

    After send that payload will automatically clear badge and delete push notification from Notification Center.

    Not. If badge was zero before sending silent notification , will not clear notifications.

    https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

    0 讨论(0)
  • 2021-02-04 03:33

    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..!!

    0 讨论(0)
提交回复
热议问题