从以后的日期开始,每分钟重复一次用户通知

时间:2020-05-15 01:22:52

标签: swift calendar components usernotifications unnotificationrequest

使用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]

问题是:

如何创建在特定日期和时间触发的本地通知,此后每分钟不断重复?

(目标是为此仅花费一个本地通知)。

0 个答案:

没有答案