Отмена localNotification при закрытии приложения свайпом

ios
swift3

#1

Пытаюсь отменить локальное уведомление в случае, если пользователь убивает приложение свайпом.

Создаю наблюдателя для ApplicationWillTerminate во viewDidLoad()

{
NotificationCenter.default.addObserver(self, selector: #selector(cancelNotification (_:)), name: NSNotification.Name.UIApplicationWillTerminate, object: nil)
}

функция:

func cancelNotification(_ notification: NSNotification) {
    UIApplication.shared.cancelLocalNotification(myNotification)
}

Не работает. В сети некоторые пишут, что при закрытии свайпом applicationWillTerminate не успевает вызваться, и поэтому код не срабатывает. Если так, то не понятно как тут быть.


#2

Про какой свайп речь?


#3

когда пользователь нажимает дважды кнопку home и свайпом вверх закрывает приложение. На SO пишут, что вроде как в таком случае applicationWillTerminate не срабатывает.


#4
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
    switch UIApplication.shared.applicationState {
    case .active:
      print("Приложение активно")
    case .background:
      print("Приложение свернуто, но активно")
    case .inactive:
      print("Приложение неактивно или выгружено")
    }
  }

Можете попробовать использовать метод делегата на получение уведомлений. Приложение регистрирует разрешения, значит обработчик должен сработать. Там внутри уже смотреть состояние приложения и если оно неактивно\выгружено, то отменять уведомление.

Попробуйте изобразить нечто подобное, как в примере.


#5

Не работают принты почему-то… Даже в активном состоянии не срабатывает обработчик.