Я отправляю уведомление пользователю со следующим кодом, используя UNTimeIntervalNotificationTrigger. Уведомление отправляется через 1 час, что работает. Теперь я хочу дать пользователю возможность сбрасывать TimeInterval для уведомления, чтобы такое же уведомление запускалось снова, но TimeInterval сбрасывается только тогда, когда пользователь нажимает эту кнопку. Это означает, что repeats: true не вариант.

Мой код:

let tijd = 15

@IBAction func change(_ sender: Any) {
    // Notification
    let content = UNMutableNotificationContent()
    content.title = "title"
    content.body = "body"
    content.badge = 1
    content.sound = UNNotificationSound.default()


    // Timer
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: TimeInterval(tijd), repeats: false)
    let request = UNNotificationRequest(identifier: bezigheid, content: content, trigger: trigger)

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

@IBAction func repeat(_ sender: Any) {
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: TimeInterval(tijd), repeats: false)
    trigger.invalidate()
}

Я пытался аннулировать TimeInterval при нажатии кнопки повтора, но это только дало мне ошибку, поэтому я не думаю, что это путь. Каким способом преформовать это действие? :)

0
G Buis 24 Апр 2017 в 15:37

2 ответа

Лучший ответ

Сначала удалите старое уведомление, используя следующий код: // Удалить уведомление

< Код > UNUserNotificationCenter.current ( ) removePendingNotification просит ( withIdentif МСВЗ . : [ Bezigheid ] )

Затем вы можете настроить следующее уведомление так же, как вы настроили первое уведомление!

0
KKRocks 26 Апр 2017 в 13:19

Это было довольно просто, благодаря @KKRocks я смог найти решение. Мне просто нужно было удалить его и снова добавить то же самое уведомление, см. Код:

let tijd = 15

@IBAction func change(_ sender: Any) {
    // Notification
    let content = UNMutableNotificationContent()
    content.title = "title"
    content.body = "body"
    content.badge = 1
    content.sound = UNNotificationSound.default()

    // Timer
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: TimeInterval(tijd), repeats: false)
    let request = UNNotificationRequest(identifier: bezigheid, content: content, trigger: trigger)

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

@IBAction func repeat(_ sender: Any) {     
    // Remove notification
    UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [bezigheid])

    // Notification
    let content = UNMutableNotificationContent()
    content.title = "title"
    content.body = "body"
    content.badge = 1
    content.sound = UNNotificationSound.default()

    // Timer
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: TimeInterval(tijd), repeats: false)
    let request = UNNotificationRequest(identifier: bezigheid, content: content, trigger: trigger)

    // Add notification
    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
0
G Buis 26 Апр 2017 в 12:01
43588282