我正在安排一个本地通知,该通知在每个工作日重复一次(每个星期三说一些示例)
let content = UNMutableNotificationContent()
content.title = notificationTitle
content.body = notificationBody
let currentCalendar = NSCalendar.current
let dateComponents = currentCalendar.dateComponents([.weekOfMonth], from: startDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: ViewController.kEveryWeekIdentifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
}
上面的代码可以正常工作,但是我想在触发/传递之前删除特定的通知。
可以像这样删除吗?
还是至少不可以在特定日期触发通知?
答案 0 :(得分:0)
您可以通过两种方式删除通知:
1)通过标识符
创建通知时,请设置其标识符。您可以通过将该标识符传递给以下方法来删除通知:
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: arrayOfNotificationIds)
2)按日期
另一种选择是整理所有计划的通知并按特定日期过滤它们,然后将在特定日期计划的通知传递给上述方法以删除它们。
您可以按以下方式获取所有计划的通知:
UNUserNotificationCenter.current().getPendingNotificationRequests(completionHandler: {requests -> () in }
您可能还会发现这很有用:从计划的通知中提取触发器(及其过滤日期):
1)使用上述方法检索通知
2)获取通知触发器。
let currentTrigger = currentRequest.trigger as! UNCalendarNotificationTrigger
3)从触发器中获取日期分量
let dateComponents = currentTrigger.dateComponents
4)使用合适的dateComponents
过滤掉!