设置特定日期和时间的本地通知 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的主要内容,如果未能解决你的问题,请参考以下文章

每周特定日期的本地通知

特定日期和时间的本地通知不起作用。迅速

如何在 Swift 的日期选择器上设置本地通知时间

将本地通知设置为 swift 3 前 1 天或 2 天前

使用cordova本地通知和离子设置重复间隔的特定数据和时间

如何阻止计划的本地通知在特定日期后触发?