每 n 天重复一次本地通知

Posted

技术标签:

【中文标题】每 n 天重复一次本地通知【英文标题】:Repeat local notification every n days 【发布时间】:2020-02-23 16:37:42 【问题描述】:

我正在尝试创建将每 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,但不幸的是,我找不到在没有用户交互的情况下处理通知接收的方法.

任何想法它应该如何工作?

【问题讨论】:

这能回答你的问题吗? Swift Repeat LocalNotification every 5 days @KirilS.,不幸的是没有:( 【参考方案1】:

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

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

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

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

您可以设置 x 天的 TimeInterval 并重复此操作,但要确定开始它的确切时间可能会很棘手。

【讨论】:

以上是关于每 n 天重复一次本地通知的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11-每 x 分钟重复一次的用户本地通知

本地通知每 30 秒重复一次

如何将本地通知重复间隔设置为自定义时间间隔?

最小化应用程序iOS时如何每隔特定N天推送本地通知?

Swift:在每天设定的时间之间创建重复的本地通知

本地通知 - 重复间隔/自定义时间不起作用