首页 > 解决方案 > 在所有工作日触发本地 iOS 通知

问题描述

我正在尝试设置在所有工作日触发的本地通知,即:从周一到周五下午 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 点。有什么线索吗?

标签: iosswift

解决方案


首先创建一个日期对象

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")

推荐阅读