【问题标题】:How to run a notification on a specific day of the week, but every other week (Swift + Xcode)?如何在一周中的特定日期运行通知,但每隔一周(Swift + Xcode)?
【发布时间】:2019-02-07 11:22:52
【问题描述】:

基本上,我需要一个应用程序,该应用程序每隔星期一运行一次通知。我所拥有的是一个每个星期一运行通知的应用程序。有没有办法设置它,以便在收到第一个通知时,应用程序将开始一个两周的时间间隔,它将再次运行通知,并让它重复?例如,如果我有一个名为“week”的变量,并且每隔一周让它在“1”和“2”之间交替,我如何将它标记到通知的触发器?

func notification(hour: Int, minute: Int, weekday: Int, text: String){

    let content = UNMutableNotificationContent()
    content.title = "Example"
    content.body = text
    content.sound = UNNotificationSound.default()

    let trigger = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: hour, minute: minute, weekday: weekday), repeats: true)

    let request = UNNotificationRequest(identifier: text, content: content, trigger: trigger)

    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

}

override func viewDidLoad() {
    super.viewDidLoad()

    notification(hour: 12, minute: 0, weekday: 2, text: "Test")

}

【问题讨论】:

    标签: ios swift usernotifications


    【解决方案1】:

    对于重复的通知,您不能这样做。 做到这一点的唯一方法是使用非重复通知并提前在给定时间(在你的情况下为星期一)设置它们 - 例如制作一个 for 循环,将在接下来的 10 个星期一设置单个通知 - 你必须手动计算循环中所有它们的触发时间。

    限制是您不能将它们设为不定式 - 但可能如果用户不会对这 10 条通知做出反应 - 您以后使用它们的机会非常小 - 至少根据我的经验。

    最好的方法是在每次用户关闭应用程序时设置这些通知 - 例如,如果我们在第 5 个星期一打开应用程序,您应该清理所有通知并再次设置下一组 10 个通知。

    【讨论】:

    • 有没有办法改变触发器中的“重复”间隔?
    • 您只需使用带有 repeats = false 的 UNCalendarNotificationTrigger 即可,您必须多次生成它,每次都会连续计算下周一的时间触发器。所以你需要使用 UNUserNotificationCenter.current().add 尽可能多的星期一你想提前覆盖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多