Я отправляю уведомление пользователю со следующим кодом, используя 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 при нажатии кнопки повтора, но это только дало мне ошибку, поэтому я не думаю, что это путь. Каким способом преформовать это действие? :)
2 ответа
Сначала удалите старое уведомление, используя следующий код: // Удалить уведомление
< Код > UNUserNotificationCenter.current ( ) removePendingNotification просит ( withIdentif МСВЗ . : [ Bezigheid ] ) код >
Затем вы можете настроить следующее уведомление так же, как вы настроили первое уведомление!
Это было довольно просто, благодаря @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)
}
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.