在所有工作日触发本地iOS通知

时间:2019-07-16 15:30:33

标签: ios swift

我正在尝试设置在所有工作日触发的本地通知,即:从星期一到星期五的下午5点,但不在周末触发。
在Apple的文档中,我发现这种方式可以一整天触发通知:

var dateComponents = DateComponents()
dateComponents.calendar = Calendar.current

dateComponents.hour = 17    // 17:00 hours

// Create the trigger as a repeating event.
let trigger = UNCalendarNotificationTrigger(
dateMatching: dateComponents, repeats: true)

但是我无法找出如何排除特定日期,即:星期六和星期日,并将时间设置为下午5点。有线索吗?

1 个答案:

答案 0 :(得分:0)

首先使用创建一个日期对象

let date = Date(timeIntervalSinceNow: 3600) // it may be any date whatever you want 

要通过日期组件创建触发器,请执行以下操作:

let triggerWeekly = Calendar.current.dateComponents([.weekday,hour,.minute,.second,], from: date)

现在在UNCalendarNotificationTrigger中传递该日期并重复true

let trigger = UNCalendarNotificationTrigger(dateMatching: triggerWeekly, repeats: true)

使用时间创建日期:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31") // put your date and time here

如果特定于语言环境的时间:

 formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")