使用Swift5.2,iOS13.4和
我尝试设置一个本地通知,该通知在特定日期触发,并且每分钟不断重复。
我尝试通过以下方式使用Calendar.components和UserNotification:
// create alarmDate in the future
let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let alarmDate = formatter.date(from: "2020/05/15 20:31") ?? Date()
let repeatesBool = true // the alarm shall repeat every minute
let calendarComponentSet: Set<Calendar.Component> = [.second] // mask to repeat every minute
let alarmIdentifier = "myID1234"
let triggerKind = Calendar.current.dateComponents(calendarComponentSet, from: alarmDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerKind, repeats: repeatesBool)
let request = UNNotificationRequest(identifier: alarmIdentifier, content: content, trigger: trigger)
notificationCenter.add(request) {(error) in
if let error = error { print("error: \(error)") }
}
。
问题:
一旦我在alarmDate上的任何时间执行了上述代码,警报就会立即开始触发(而不是在到达alarmDate-time(即小时和分钟)时)。换句话说:当alarmDate应该在20:31的时间开始,而我在例如16:00执行上述代码时,它已经触发了警报(而不是预期的20:31)。为什么会这样?
在上面的代码中,如果我按如下方式设置calendarComponentSet,则确实会在正确的日期和时间触发警报-但随后它不会按预期的每分钟重复一次:
let calendarComponentSet: Set<Calendar.Component> = [.day, .month, .year, .hour, .minute, .second]
问题是:
如何创建在特定日期和时间触发的本地通知,此后每分钟不断重复?
(目标是为此仅花费一个本地通知)。