如何在一周的特定日期运行通知,但每隔一周(Swift + Xcode)运行通知?

时间:2018-09-01 21:07:22

标签: ios swift usernotifications

基本上,我需要一个星期一运行通知的应用。我所拥有的是一个在每个星期一运行 通知的应用程序。有没有一种方法可以设置它,以便在收到第一个通知时,该应用程序将开始两周的时间间隔,在该时间间隔内它将再次运行该通知,并使其重复执行?例如,如果我有一个名为“ week”的变量,并且每隔一周在“ 1”和“ 2”之间进行交替,该如何将其标记为通知的触发器?

func notification(hour: Int, minute: Int, weekday: Int, text: String){

    let content = UNMutableNotificationContent()
    content.title = "Example"
    content.body = text
    content.sound = UNNotificationSound.default()

    let trigger = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: hour, minute: minute, weekday: weekday), repeats: true)

    let request = UNNotificationRequest(identifier: text, content: content, trigger: trigger)

    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

}

override func viewDidLoad() {
    super.viewDidLoad()

    notification(hour: 12, minute: 0, weekday: 2, text: "Test")

}

1 个答案:

答案 0 :(得分:0)

对于重复的通知,您不能这样做。 唯一的方法是使用非重复的通知并在给定的时间(在您的情况下为星期一)预先设置它们-例如,创建一个for循环,将在下一个10个星期一设置单个通知-您必须手动计算触发所有这些对象的时间。

限制是您不能使它们变得不确定-但是,如果用户不对这10条通知做出反应-至少从我的经验来看,以后使用它们的可能性很小。

最好的方法也是在用户每次关闭应用程序时设置这些通知-例如,如果我们在第5个星期一打开该应用程序,则应清理所有通知并再次设置下一组10个通知。