我的应用程序必须每隔n天提醒用户一些事情。
目前,我有

var dateComponents = DateComponents()
dateComponents.hour = userHour
dateComponents.minute = userMinute
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

我的问题是我不知道如何用DateComponents来表示日期的跳过。
我发现UNTimeIntervalNotificationTrigger允许我每隔24或48小时等时间点火,但这给了我在某一天点火的可能性。
我应该把这两种混合起来吗?首先设置日历触发器,然后在第一个通知中使其实际重复?我觉得不对,一定有更简单的方法。

最佳答案

我对iOS的本地通知做了深入的研究,但有些地方却很奇怪地没有。据我所知,这是其中之一。
如果不需要设置通知触发的特定时间,则可以使用UNTimeIntervalNotificationTrigger,它允许您自设置通知时起每72小时设置一次通知。
如果您需要和确切的时间发出通知,可以使用您的代码,但添加dateComponents.weekday并设置1和4或其他内容。这不是完美的,但可以满足你的需要。
一个需要做更多工作的解决方案是创建5个类似的通知。设置您希望他们启动的日期和时间(3天、6天、9天等),然后当用户启动应用程序时,您会查看是否已发送了任何通知,并在将来再次设置这些通知。这些不会重复。每次都由你手动设置。

10-08 15:39