【发布时间】:2017-01-03 10:15:53
【问题描述】:
我似乎无法找到任何适用于这种确切情况的 Apple 文档,并且我尝试了各种方法来做到这一点,但我一直空无一物。
我想安排一个重复通知(iOS 10+ 所以UNCalendarNotificationTrigger 或同等学历)。
这些是本地通知不是推送通知。
我的目标:
安排重复的通知:
- 每两周一次(例如,每秒星期二)
- 每季度一次(例如,每 3 个月一次)
我目前的方法:
这些触发器运行良好,并且易于实现(在 Swift Playground 中运行代码)。
// Every day at 12pm
var daily = DateComponents()
daily.hour = 12
let dailyTrigger = UNCalendarNotificationTrigger(dateMatching: daily, repeats: true)
dailyTrigger.nextTriggerDate() // "Jan 4, 2017, 12:00 PM"
// Every Tuesday at 12pm
var weekly = DateComponents()
weekly.hour = 12
weekly.weekday = 3
let weeklyTrigger = UNCalendarNotificationTrigger(dateMatching: weekly, repeats: true)
weeklyTrigger.nextTriggerDate() // "Jan 10, 2017, 12:00 PM"
// The 1st of every month at 12pm
var monthly = DateComponents()
monthly.hour = 12
monthly.day = 1
let monthlyTrigger = UNCalendarNotificationTrigger(dateMatching: monthly, repeats: true)
monthlyTrigger.nextTriggerDate() // "Feb 1, 2017, 12:00 PM"
// Every 1st of February at 12pm
var yearly = DateComponents()
yearly.hour = 12
yearly.day = 1
yearly.month = 2
let yearlyTrigger = UNCalendarNotificationTrigger(dateMatching: yearly, repeats: true)
yearlyTrigger.nextTriggerDate() // "Feb 1, 2017, 12:00 PM"
但是……
我似乎无法让fortnightly 或quarterly 触发器正常工作。
// Every second Tuesday at 12pm
// ... There is no "date.fortnight", is this possible?
// The 1st of every quarter at 12pm
var quarterly = DateComponents()
quarterly.hour = 12
quarterly.day = 4
// Values: 1, 2, 3 or 4 all produce the same "nextTriggerDate" - why?
quarterly.quarter = 4
let quarterlyTrigger = UNCalendarNotificationTrigger(dateMatching: quarterly, repeats: true)
quarterlyTrigger.nextTriggerDate()
所以,明确地说,我的问题是:
- 是否可以获得每两周重复一次的通知?
- 我们如何获得每季度一次的触发器?
由于DateComponents() 有一个quarter 单元,我假设quarterly 触发器是可能的。然而,对于每两周一次的提醒,我什至不确定这是否可能......
任何见解将不胜感激!
【问题讨论】:
-
我们对季度触发器有答案了吗?
标签: ios swift notifications calendar