Я пытаюсь уведомить пользователя только по рабочим дням и не хочу делать это с циклом for, поэтому уведомление повторяет bool как true.Пока приложение открыто, функция willPresent работает, но когда приложение переходит в фоновый режим, функция willPresent не вызывается приложением и в выходные дни отправляет уведомление пользователю, а я этого не хочу.
Я уже установил UNUserNotificationCenter.current().delegate = self
в didFinishLaunchingWithOptions
Вот моя функция willPresent в моем AppDelegate:
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let date = Date()
var dayOfWeek = date.getWeekDay()
if dayOfWeek.rawValue == 1 || dayOfWeek.rawValue == 7{
print("Don't send a notification")
completionHandler([])
}else{
completionHandler([.alert, .sound, .badge])
}
}
Расширение, которое я использую:
extension Date {
enum WeekDay: Int {
case sunday = 1
case monday
case tuesday
case wednesday
case thursday
case friday
case saturday
}
func getWeekDay() -> WeekDay {
let calendar = Calendar.current
let weekDay = calendar.component(Calendar.Component.weekday, from: self)
return WeekDay(rawValue: weekDay)!
}
}
Любая помощь будет принята с благодарностью.Спасибо