Swift отменить локальное уведомление и создать новое с тем же идентификатором не работает - PullRequest
0 голосов
/ 28 мая 2019

Я пишу интервальный таймер, где пользователь может выбрать интервал> = 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, и я могу успешно отменить и изменить интервал, кроме случаев, когда яустановить интервал, который я использовал перед этим сеансом (и, следовательно, использовал этот идентификатор раньше), и в этом случае проблема получения уведомления без предупреждения сохраняется.

Кто-нибудь знает причину этого?Закрытие приложения и его повторное открытие решит проблему использования того же идентификатора

...