iOS 10:如何在特定日期触发后重复本地通知?

Posted

技术标签:

【中文标题】iOS 10:如何在特定日期触发后重复本地通知?【英文标题】:iOS 10: How to repeat local notification once fired on particular date? 【发布时间】:2017-01-21 04:38:10 【问题描述】:

我想在特定日期创建本地通知,然后在本地通知被触发后每 30 秒重复一次。这是我的代码:

let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents(in: .current, from: date)
let newComponents = DateComponents(calendar: calendar, timeZone: .current, month: components.month, day: components.day, hour: components.hour, minute: components.minute)
let trigger = UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: false)
let request = UNNotificationRequest(identifier: ID, content: content, trigger: trigger)

另一个问题:如何设置多个警报来完成相同的结果?

例子:

Alarm1:1/21/2017 @ 8:30am -> 每 30 秒重复一次

Alarm2:1/22/2017 @ 8:32am -> 每 30 秒重复一次 ... 以此类推。

最好的策略是什么?

【问题讨论】:

根据developer.apple.com/reference/usernotifications/… UNCalendarNotificationTrigger(dateMatching: newComponents, repeats: true) 可能会有所帮助 例如每天 8:30 重复。不是在上午 8:30 之后每 30 秒一次。 【参考方案1】:

我认为您需要设置两个UNCalendarNotificationTrigger。我假设您想在用户没有响应时每 30 秒重复一次。

Alarm1: 1/21/2017 @ 8:30:00 一个,repeat: false。并在1/21/2017 @ 8:30:30repeat: true 添加第二个UNCalendarNotificationTrigger

当用户响应第一个通知时,您可以删除第二个UNCalendarNotificationTrigger

到目前为止,没有一个 UserNotificationTrigger 允许在不同的内部重复而不用户响应通知。

【讨论】:

你回答了我的部分问题。我想要的是类似于 Alarmify 的东西,一旦警报在早上 8:30 触发,它就会一直重复,直到用户停止警报。

以上是关于iOS 10:如何在特定日期触发后重复本地通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止计划的本地通知在特定日期后触发?

如何在swift 3中每天在特定时间触发本地通知

ios重复本地通知

在特定时间触发后如何重复本地通知

iOS 10 - 每“x”分钟重复一次通知

获取即将到来的指定日期的日期