gpt4 book ai didi

ios - 在 Swift 3 中使用日期选择器的触发日期安排每周可重复的本地通知

转载 作者:搜寻专家 更新时间:2023-11-01 06:04:50 26 4
gpt4 key购买 nike

所以我目前正在构建一个日程应用程序,并且我正在尝试创建一个本地通知以在每周的特定日期的特定时间触发。所以我做的第一件事是获取事件开始时间的日期值,然后我从开始时间值中减去 5 分钟,然后安排通知。以前很容易只需要输入:notification.repeatInterval = CalendarUnit.WeekOfYear 但现在该命令在 Swift 3 中已弃用,是的,所以我找到的唯一方法是:

 let someMinutesEarlier = Calendar.current.date(byAdding: .minute, value: -5, to: startTimePicker.date)

let contentOfNotification = UNMutableNotificationContent()

let interval = someMinutesEarlier?.timeIntervalSinceNow

contentOfNotification.title = "Event starting"
contentOfNotification.body = "Some notes"
contentOfNotification.sound = UNNotificationSound.default()

let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: interval!, repeats: true)
let request = UNNotificationRequest.init(identifier: notificationIdentifier, content: contentOfNotification, trigger: trigger)

let center = UNUserNotificationCenter.current()
center.add(request) { (error) in
print(error as Any)
}

但这只安排通知一次(无论重复 bool 值设置为真),因为年份在 someMinutesEarlier 中......或者它可能是其他东西?有什么想法吗?

最佳答案

正如 McNight 提到的,您可以像这样使用 UNCalendarNotificationTrigger:

let interval = 60 * 60 * 24 * 7 - 300 // One week minus 5 minutes.
let alarmTime = Calendar.current.date(byAdding: .second, value: interval, to: Date())!
let components = Calendar.current.dateComponents([.weekday, .hour, .minute], from: alarmTime)
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true)

(我还没有测试过这段代码,但这应该会让你走上正确的道路)。

更多信息 here .

编辑:修复了 SwiftyCruz 建议的时间间隔计算。

编辑 2:按照 RickiG 的建议更新为使用日历来执行时移。

关于ios - 在 Swift 3 中使用日期选择器的触发日期安排每周可重复的本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332113/

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