我似乎找不到任何关于这个确切场景的苹果文档,而且我尝试过各种方法来完成这个任务,而且我一直都是空的。
我想安排一个重复的通知(iOS 10+
,so,UNCalendarNotificationTrigger
或等效的)。
这些是本地通知而不是推送通知。
我的目标是:
安排重复的通知:
我目前的做法是:
这些触发器工作良好,实现起来也很简单(在Swift游乐场中运行代码)。
// 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
触发器是可能的。不过,对于每两周一次的提醒,我甚至不确定这是否可能.
任何洞察力都将不胜感激!
发布于 2017-01-03 12:15:03
我没有看到任何直接的选择,以触发两个星期的notification.Suggestion从我的结束。
1)是否有可能得到每两周重复一次的通知?
我提出两个方案:
UNTimeIntervalNotificationTrigger
在两周的时间间隔内重复通知?下面的例子
设timeInterValFor2Weeks = 1190507.790425003 timeInterValFor2Weeks intervalTrigger =intervalTrigger timeInterValFor2Weeks,重复:真)//“2017年1月3日,2017年1月3日,下午5:24”intervalTrigger.nextTriggerDate() //“2017年1月17日,下午12:05”UNCalendarNotificationTrigger
触发器,它应该触发一个月的第一天和第三天。例如,它应该在一个月的第一个星期天和第三个星期天发出通知。
var fortnightPart1 = DateComponents() fortnightPart1 Part1工作日=1 //(Day..here星期日)fortnightPart1 Part1.工作日顺序=2 //= n == (每个月中month...here第二个星期日的第n天)2),我们如何每季度触发一次?
如果没有直接的选择,那么我建议采用与上面相同的解决方案。
https://stackoverflow.com/questions/41441124
复制相似问题