在我的待办事项应用程序中,我试图在任务的截止日期到来时设置本地通知,但我不知道日历触发器有什么问题,间隔触发器工作正常。在函数体中,我把默认日期()
func setupNotifications(id: String, contentTitle: String, contentBody: String, date: Date) {
center.getNotificationSettings { (settings) in
if (settings.authorizationStatus == .authorized) {
let content = UNMutableNotificationContent()
content.title = contentTitle
content.body = contentBody
content.sound = .default
let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour], from: Date().addingTimeInterval(5))
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let trigger2 = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let request = UNNotificationRequest(identifier: id, content: content, trigger: trigger)
let request2 = UNNotificationRequest(identifier: id, content: content, trigger: trigger2)
self.center.add(request)
}
}
2条答案
按热度按时间3bygqnnd1#
你说:
时间间隔是以秒为单位计算的,但是你的
dateComponents
没有秒;你告诉它只考虑年、月、日和小时。而 * 那个 * 时间已经过去了。只需将日期组件转换回日期即可看到这一点:
因此,至少需要在组件列表中包含
.seconds
。正如您所看到的,这将改变一切:ny6fqffe2#
我在这里找到了解决方案https://github.com/YoussifHany51/ToDoList/blob/main/ToDoList/Models/localNotification.swift并将其应用到我的项目中