延迟iOS上的重复用户通知

延迟iOS上的重复用户通知,ios,unusernotificationcenter,Ios,Unusernotificationcenter,在iOS上安排用户通知时,是否有方法在执行日期匹配时向UNCalendarNotificationTrigger添加初始延迟 例如:从现在起3天内,开始每天发送一次本地通知 我之所以想做到这一点,是因为我的通知方案使用了不同的通知机构——前几天安排为不重复,每次都有不同的副本,n天后我希望有一个重复的通知生效。根据关于这一主题的许多讨论,这是不可能的 您可以在for循环中为特定日期创建一定数量的本地通知,我相信每个应用程序的限制是50个,然后当应用程序在3天后在前台打开时,您将有机会删除它们并使

在iOS上安排用户通知时,是否有方法在执行日期匹配时向
UNCalendarNotificationTrigger
添加初始延迟

例如:从现在起3天内,开始每天发送一次本地通知


我之所以想做到这一点,是因为我的通知方案使用了不同的通知机构——前几天安排为不重复,每次都有不同的副本,n天后我希望有一个重复的通知生效。

根据关于这一主题的许多讨论,这是不可能的

您可以在for循环中为特定日期创建一定数量的本地通知,我相信每个应用程序的限制是50个,然后当应用程序在3天后在前台打开时,您将有机会删除它们并使用重复通知

这不是最优雅的解决方案,但如果你必须这样做,那么这是唯一的方法,应该足够了,如果用户在排队通知的50天左右内没有打开应用程序,他们可能不会再打开它

3天延迟补偿的初始手动设置如下所示:

for dayOffset in 3...33 {
    let nextTriggerDate = Calendar.current.date(byAdding: .day, value: dayOffset, to: Date())!
    let comps = Calendar.current.dateComponents([.year, .month, .day], from: nextTriggerDate)

    let trigger = UNCalendarNotificationTrigger(dateMatching: comps, repeats: false)
    // Create a notification here
    // ...
}
这取决于您创建逻辑,以检测应用程序何时打开以及是否在3天后无限期重复


一般来说,您可以永久使用此功能,因为如果用户在一段时间内没有响应,您可能希望更改通知(以DuoLingo为例,几天后它会显示“这些通知不起作用……我们将关闭它们一段时间”)

根据关于此主题的许多讨论,这是不可能的

您可以在for循环中为特定日期创建一定数量的本地通知,我相信每个应用程序的限制是50个,然后当应用程序在3天后在前台打开时,您将有机会删除它们并使用重复通知

这不是最优雅的解决方案,但如果你必须这样做,那么这是唯一的方法,应该足够了,如果用户在排队通知的50天左右内没有打开应用程序,他们可能不会再打开它

3天延迟补偿的初始手动设置如下所示:

for dayOffset in 3...33 {
    let nextTriggerDate = Calendar.current.date(byAdding: .day, value: dayOffset, to: Date())!
    let comps = Calendar.current.dateComponents([.year, .month, .day], from: nextTriggerDate)

    let trigger = UNCalendarNotificationTrigger(dateMatching: comps, repeats: false)
    // Create a notification here
    // ...
}
这取决于您创建逻辑,以检测应用程序何时打开以及是否在3天后无限期重复


一般来说,您可以永久使用此功能,因为如果用户在一段时间内没有响应,您可能希望更改通知(以DuoLingo为例,几天后它会显示“这些通知不起作用……我们将关闭它们一段时间”)

感谢您的澄清和其他选择。长期的解决方案可能是将大量通知移动到服务器端,以简化调度。感谢您的澄清和其他选择。长期的解决方案可能是将大量通知移动到服务器端,以简化调度。