Моя цель - создать локальное уведомление, которое будет срабатывать, если пользователь не запускал приложение в течение 2 недель. Я использую класс Manager для планирования локальных уведомлений приложения.
Это мое текущее решение:
func applicationWillTerminate(_ application: UIApplication) {
NotificationManager.shared.schedule(notification)
}
Тем не менее, applicationWillTerminate
вызываться не будет - и, следовательно, уведомление не будет запланировано - , если приложение завершается, пока оно находится в фоновом режиме (т.е. оно удаляется из дока) .
Есть ли обходные пути к этому?
Один из обходных путей, о котором я подумал, состоял в том, чтобы запланировать уведомление при каждом входе приложения в фоновый режим, а затем вызвать removePendingNotificationRequests()
, если приложение снова станет активным, как показано ниже:
func applicationDidEnterBackground(_ application: UIApplication) {
NotificationManager.shared.schedule(notification)
}
func applicationDidBecomeActive(_ application: UIApplication) {
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: ["notification"])
}
Проблема в том, что это кажется мне расточительным и неоптимальным решением. Есть ли более элегантное решение, чем планирование этого уведомления