gpt4 book ai didi

ios - UNCalendarNotificationTrigger与开始日期

转载 作者:行者123 更新时间:2023-12-01 22:11:06 25 4
gpt4 key购买 nike

我正在尝试制作一个提醒应用程序,并且很难设置提醒的开始日期。我可以使下面的代码与本地通知一起使用。使用此代码,我能够在每个星期二的用户设置的时间(以“小时”和“分钟”表示)获得本地通知。

    if tuesdayIsChecked == true {

AlarmSupportFileX.tuesdaySelectedBool = true

hour = hourDateFormatter.string(from: datePicker.date)
minute = minuteDateFormatter.string(from: datePicker.date)

var dateComponents = DateComponents()
dateComponents.weekday = 3
dateComponents.hour = Int(hour)
dateComponents.minute = Int(minute)

print(dateComponents)

let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let requestIdentifier = "\(randomGeneratedString)Tuesday"
let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger)

UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in
//Handle error

})

}

我的问题是我只希望它在用户选择的日期上触发。
示例:如果我在2018年11月12日(星期一)使用以上代码,则通知将在2018年11月13日(星期二)以及随后的所有星期二触发。

假设用户选择要在星期二触发的警报(dateComponents.weekday = 3)。如果用户在11月12日(星期一)设置了通知,并且他们在11月25日(星期日)选择了开始日期,我希望它仅在27日显示通知11月(​​星期二)及随后的所有星期二。我该如何实现?

最佳答案

仅使用UNCalendarNotificationTrigger是不可能的。

您需要为应用设置某种机制,以便在星期二的一周内设置该通知。

一种方法是:

  • 检查所选日期是否是本周

  • -> 如果为TRUE:注册通知

    -> 如果为FALSE:写入UserDefaults日期。
  • 然后,您可以在didBecomeActive()或viewDidLoad()中从UserDefaults加载日期,并检查日期是否在本周,如果是这种情况,请注册通知。
  • 关于ios - UNCalendarNotificationTrigger与开始日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53273451/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com