设置特定日期和时间的本地通知 swift 3
Posted
技术标签:
【中文标题】设置特定日期和时间的本地通知 swift 3【英文标题】:Set local notifications for particular days and time swift 3 【发布时间】:2017-09-07 05:53:37 【问题描述】:在我的应用程序中,我想添加本地通知。场景将是用户可以选择从周一到周日的任何时间和日期。例如,如果用户选择 Mon、Thur 和 Sat 作为日期,时间选择 11:00 pm,那么现在应该在所有选定的日期和特定时间通知用户。
代码:
let notification = UNMutableNotificationContent()
notification.title = "Danger Will Robinson"
notification.subtitle = "Something This Way Comes"
notification.body = "I need to tell you something, but first read this."
let notificationTrigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)
// let test = UNCalendarNotificationTrigger()
let request = UNNotificationRequest(identifier: "notification1", content: notification, trigger: notificationTrigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
我正在使用此代码,但这并不符合我的需要。
【问题讨论】:
您在这段代码中的 timeInterval 是 60 秒。因此,它将在 60 秒后触发。你没有实现任何多天触发的逻辑? ***.com/questions/41800189/… 之类的东西看起来很有趣 【参考方案1】:要获得在特定工作日特定时间重复的本地通知,您可以使用UNCalendarNotificationTrigger
:
let notification = UNMutableNotificationContent()
notification.title = "Danger Will Robinson"
notification.subtitle = "Something This Way Comes"
notification.body = "I need to tell you something, but first read this."
// add notification for Mondays at 11:00 a.m.
var dateComponents = DateComponents()
dateComponents.weekday = 2
dateComponents.hour = 11
dateComponents.minute = 0
let notificationTrigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: "notification1", content: notification, trigger: notificationTrigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
如果您希望在周一、周四和周六的 11:00 收到通知,则需要添加 3 个单独的请求。为了能够删除它们,您必须跟踪标识符。
【讨论】:
很好的答案!谢谢。我有一个问题,您知道如何在特定时间停止重复此通知吗? @MohamedEzzat 您可以设置通知请求的标识符属性,并随时使用该标识符将其从通知中心删除。以上是关于设置特定日期和时间的本地通知 swift 3的主要内容,如果未能解决你的问题,请参考以下文章