在iOS上安排用户通知时,有没有办法在执行日期匹配时向UNCalendarNotificationTrigger
添加初始延迟?
例如:从现在开始的3天内,每天开始发送一次本地通知。
我之所以想要实现这一点,是因为我的通知方案使用了不同的通知机构 - 前几天被安排为非重复,每次都有不同的副本,并且在n天后我想要重复通知英寸
答案 0 :(得分:2)
根据关于SO主题的许多讨论,这是不可能的。
您可以为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天后无限期重复。</ p>
一般情况下,您可以永久使用此功能,因为如果用户暂时没有响应,您可能希望区分通知(例如,在几天之后接受DuoLingo&#34;这些通知不是&#39工作......我们将他们关闭一段时间&#34;)