首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS通知触发器:每两周和/或每季度一次

iOS通知触发器:每两周和/或每季度一次
EN

Stack Overflow用户
提问于 2017-01-03 10:15:53
回答 1查看 2.4K关注 0票数 8

我似乎找不到任何关于这个确切场景的苹果文档,而且我尝试过各种方法来完成这个任务,而且我一直都是空的。

我想安排一个重复的通知(iOS 10+,so,UNCalendarNotificationTrigger或等效的)。

这些是本地通知而不是推送通知。

我的目标是:

安排重复的通知:

  • 每两周一次(例如每周二一次第二次)
  • 每季度一次(例如,每3个月1次)

我目前的做法是:

这些触发器工作良好,实现起来也很简单(在Swift游乐场中运行代码)。

代码语言:javascript
运行
复制
// 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"

但是..。

我似乎无法让fortnightlyquarterly触发器正常工作。

代码语言:javascript
运行
复制
// 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()

所以,我要说清楚,我的问题是:

  1. 有可能每两周收到一次通知吗?
  2. 我们怎样才能每季度触发一次?

因为DateComponents()有一个quarter单元,所以我假设quarterly触发器是可能的。不过,对于每两周一次的提醒,我甚至不确定这是否可能.

任何洞察力都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2017-01-03 12:15:03

我没有看到任何直接的选择,以触发两个星期的notification.Suggestion从我的结束。

1)是否有可能得到每两周重复一次的通知?

我提出两个方案:

  1. 我们是否可以使用UNTimeIntervalNotificationTrigger在两周的时间间隔内重复通知?下面的例子 设timeInterValFor2Weeks = 1190507.790425003 timeInterValFor2Weeks intervalTrigger =intervalTrigger timeInterValFor2Weeks,重复:真)//“2017年1月3日,2017年1月3日,下午5:24”intervalTrigger.nextTriggerDate() //“2017年1月17日,下午12:05”
  2. 调度两个UNCalendarNotificationTrigger触发器,它应该触发一个月的第一天和第三天。例如,它应该在一个月的第一个星期天和第三个星期天发出通知。 var fortnightPart1 = DateComponents() fortnightPart1 Part1工作日=1 //(Day..here星期日)fortnightPart1 Part1.工作日顺序=2 //= n == (每个月中month...here第二个星期日的第n天)

2),我们如何每季度触发一次?

如果没有直接的选择,那么我建议采用与上面相同的解决方案。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41441124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档