Я пишу интервальный таймер, где пользователь может выбрать интервал> = 60 секунд для получения повторяющегося уведомления.Это работает нормально, и уведомление повторяется, как и ожидалось, и создается так:
func scheduleNotification(){
let content = UNMutableNotificationContent()
content.title = "INTERVAL TIMER"
content.sound = UNNotificationSound.default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: Double(userSeconds), repeats: true)
let request = UNNotificationRequest(identifier: "test", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
}
}
Пользователь может остановить таймер, чтобы установить другой интервал, который вызывает эту функцию, а затем снова предыдущую функцию с новым userSeconds (интервал) значение:
func cancelNotification(){
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
}
Однако уведомления для каждого интервала, установленного после отмены первого, не будут предупреждать пользователя - нет звука / вибрации и т. д.
Например, я установил 60 секундинтервал и получать уведомления каждые 60 секунд, отмените это и измените его на 120 секунд.Уведомление теперь приходит только каждые 120 секунд, но нет никакого предупреждения, чтобы пойти с ним.Он появится на экране блокировки, но не разбудит телефон и не издаст звук.
Я протестировал установку идентификатора на значение String userSeconds, и я могу успешно отменить и изменить интервал, кроме случаев, когда яустановить интервал, который я использовал перед этим сеансом (и, следовательно, использовал этот идентификатор раньше), и в этом случае проблема получения уведомления без предупреждения сохраняется.
Кто-нибудь знает причину этого?Закрытие приложения и его повторное открытие решит проблему использования того же идентификатора