How to detect “clear” notifications

后端 未结 3 414
深忆病人
深忆病人 2020-12-18 05:05

if more than a minute pass from the time a user notification arrived to notification center, there is a \"clear\" option to dismiss one or more notifications at once from no

3条回答
  •  甜味超标
    2020-12-18 05:46

    Van's anwser goes straight into the right direction, but we do not need to implement the custom action to get what the question giver wanted.

    If you create the category and pass it to the UNUserNotificationCenter you get a callback on the delegates didReceive function even if the user tabbed on the builtin Clear Button or the "X" Button on the content extension. The ResponeIdentifier will then be response.actionIdentifier == UNNotificationDismissActionIdentifier.

    The Category must be something like that:

    //Create the category...
    UNNotificationCategory(identifier: "YourCustomIdentifier",
    actions: [], intentIdentifiers: [], options: .customDismissAction)
    
    //... and pass it to the UNUserNotificationCenter
    UNUserNotificationCenter.current().setNotificationCategories(notificationCategories)
    

    The category triggers the magic in the iOS framework and suddenly you get callbacks in your delegate. The delegate function should look like:

    func userNotificationCenter(_ center: UNUserNotificationCenter,
                            didReceive response: UNNotificationResponse,
                            withCompletionHandler completionHandler: @escaping () -> Void) {
      if response.actionIdentifier == UNNotificationDismissActionIdentifier {
        // notification has been dismissed somehow        
      }
      completionHandler()
    }
    

提交回复
热议问题