ios - 每 n 天重复一次本地通知
问题描述
我正在尝试创建将每 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,但不幸的是,我找不到在没有用户交互的情况下处理通知接收的方法。
任何想法它应该如何工作?
解决方案
根据文档,如果您希望通知重复,您需要为日期组件设置可重复的约束。
因此,要将通知设置为每天早上 8:30 运行,您只需设置小时和分钟并将其设置为重复。
var date = DateComponents()
date.hour = 8
date.minute = 30
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
我不认为您可以使用重复来每 x 天重复一次,您可以设置一周中的特定日期或月份中的日期,但不能每 n 天设置一次。
您可以设置TimeInterval
x 天并重复该操作,但要确定开始它的确切时间可能会很棘手。
推荐阅读
- http - HTTP 标头和正文之间有意外的填充
- java - 解析 Microsoft CRM Web API 返回的 Odata 值
- javascript - 带有 javascript 值的 CSS 过渡
- javascript - 如何:使用 AngularJS 递归循环遍历列表和子列表,查找数据
- programming-languages - 给定语言的乔姆斯基类型是什么?
- css - 网页不是 100% 宽度
- node.js - 如何从选择菜单中提取帖子数据?选择的选项链接到 postgresql 数据库
- bash - 如何在 Bash 中将变量设置为“docker-compose restart”命令的输出?
- javascript - 变量不能按预期工作 javascript - html
- hive - Sqoop 命令引用了不正确的 DERBY 模式