在我正在开发的应用程序中,有一个选项可以触发通知x在设置该通知的实际时间之前的时间。例如,我设置了10:00的提醒。但是在应用程序的本地设置中,我设置了通知,以在设置时间之前10分钟触发。因此,在此示例的情况下,通知将在9:50触发。
现在,当我为个人通知设置时间时,我可以做上述。但是我想做的是在设定的实际时间之前触发所有未决通知。
这是我用来设置通知的功能:
func scheduleNotification(at date: Date, identifier: String, threadIdentifier: String, body: String) {
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, year: components.year, month: components.month, day: components.day, hour: components.hour, minute: components.minute)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)
let content = UNMutableNotificationContent()
content.title = "TestNotification"
content.body = body
content.threadIdentifier = threadIdentifier
content.sound = UNNotificationSound.default()
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) {
error in
if let error = error {
print("Error in delivering notification. Error: (error.localizedDescription)")
}
}
}
日期来自日期选择器设置的日期。我尝试通过使用此代码来更改触发属性:
UNUserNotificationCenter.current().getPendingNotificationRequests { (requests) in
for request in requests {
request.trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10*60, repeats: false)
}
}
但是现在我遇到了一个错误,说"触发"是一个唯一的属性。
无法更改预定通知的火时间,您可以删除所有通知并再次重新安排