gpt4 book ai didi

ios - 如何从特定的 future 日期起每两周触发一次本地通知

转载 作者:行者123 更新时间:2023-12-01 19:53:19 26 4
gpt4 key购买 nike

我试图每两周触发一次UNUserNotification,该日期将从特定的 future 一天开始。我已经使用UNTimeIntervalNotificationTrigger成功触发了。但是我的问题是我无法在此处设置特定的开始日期。

UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:(14*24*3600) repeats: YES];
request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:trigger];

我已经尝试使用 WeekdayOrdinal来替换 UNCalendarNotificationTrigger,但这并不总是与两周持续时间完全一样。

有什么办法可以在将来的特定日期每两周安排一次本地 UNUserNotification

最佳答案

UNNotificationRequest不提供任何触发两周重复的功能。

使用UNCalendarNotificationTrigger,您只能触发以下类型的重复发生:
weeklydailymonthlyyearly

switch repeatType {
case .daily:
newComponents.hour = components.hour
newComponents.minute = components.minute
break
case .weekly:
newComponents.hour = components.hour
newComponents.minute = components.minute
newComponents.weekday = components.weekday
break
case .monthly:
newComponents.hour = components.hour
newComponents.minute = components.minute
newComponents.day = components.day
break
case .none:
newComponents.hour = components.hour
newComponents.minute = components.minute
newComponents.day = components.day
newComponents.month = components.month
newComponents.year = components.year
break
case .annually:
newComponents.hour = components.hour
newComponents.minute = components.minute
newComponents.day = components.day
newComponents.month = components.month
break
}

尽管您可以轻松地使用 EventKit在事件中创建事件和警报,并提供所有您想要的重复选项,例如每两周,每季度,每半年等。

我创建了以下代码来创建具有多种重复类型的事件:
let eventStore = EKEventStore()
eventStore.requestAccess(to: .event, completion: { (granted, error) in
if (granted) && (error == nil) {
let event = EKEvent(eventStore: eventStore)
event.title = "Countdown title"
event.startDate = Date()
event.notes = "Countdown is complete!"
event.isAllDay = false

event.calendar = eventStore.defaultCalendarForNewEvents

var frequency : EKRecurrenceFrequency = EKRecurrenceFrequency.daily
var interval = 1

switch repeatType {
case .daily:
//Repeat every day
frequency = EKRecurrenceFrequency.daily
interval = 1
break
case .weekly:
//Repeat every week
frequency = EKRecurrenceFrequency.weekly
interval = 1
break
case .biweekly:
//Repeat every 2 weeks
frequency = EKRecurrenceFrequency.weekly
interval = 2
break
case .monthly:
//Repeat every month
frequency = EKRecurrenceFrequency.monthly
interval = 1
break
case .quarterly:
//Repeat every 3 months
frequency = EKRecurrenceFrequency.monthly
interval = 3
break
case .halfYearly:
//Repeat every 6 months
frequency = EKRecurrenceFrequency.monthly
interval = 6
break
default:
// Repeat every year
frequency = EKRecurrenceFrequency.yearly
interval = 1

}
let alarm : EKAlarm = EKAlarm(relativeOffset: TimeInterval(exactly: 0)!)
event.addAlarm(alarm)

if interval > 0 {
event.addRecurrenceRule(EKRecurrenceRule(recurrenceWith: frequency, interval: interval, end: nil))
}

do {
try eventStore.save(event, span: .thisEvent)
} catch let error as NSError {
print(error.localizedDescription)
return
}
} else {
print(error?.localizedDescription ?? "no error")
}
})

请不要忘记导入 EventKit

关于ios - 如何从特定的 future 日期起每两周触发一次本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44282808/

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