每n天重复一次本地通知

时间:2020-02-23 16:37:42

标签: ios swift notifications uilocalnotification nsnotificationcenter

我正在尝试创建将每n天发送一次本地通知的应用程序。

我具有 DailyRepeat 结构,其中包含通知信息:

struct DailyRepeat: BaseRepeat {

    var title: String
    var body: String
    var date: Date

    var day: Int

}

安排通知的方法和方法:

func notifyDaily(at notification: DailyRepeat) {
    let content = generateContent(title: notification.title, body: notification.body)
    let dateComponents = DateComponents(day: notification.day, hour: notification.date.time.hours, minute: notification.date.time.minutes)
    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
    let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)

    notificationCenter.add(request)
}

我的第一个想法是在首次触发日期创建 UNCalendarNotificationTrigger ,而不是处理通知并设置 UNTimeIntervalNotificationTrigger ,但不幸的是,我找不到在没有用户交互的情况下处理接收通知的方法

有人在想它应该如何工作吗?

1 个答案:

答案 0 :(得分:0)

根据documentation,如果您希望重复发送通知,则需要为日期组件设置可重复的约束。

因此,要将通知设置为每天早上8:30运行,您只需设置小时和分钟,然后将其设置为重复。

var date = DateComponents()
date.hour = 8
date.minute = 30 
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

我不认为您可以使用重复来每x天数重复一次,您可以设置一周中的特定天数或月份中的日期,但不能每隔n天设置一次。

您可以设置x天数的TimeInterval并重复一次,但是获取确切的开始时间可能很棘手。