Я пытаюсь установить повторное уведомление о «важных событиях», когда пользователи получают уведомление о проверке моего приложения на основе определенных дат, которые имеют важное событие. Поэтому он отправляет уведомление только в том случае, если сегодня происходит важное событие.
У меня есть глобальная переменная isImportant
, которая установлена в значение true.
Затем у меня есть функция с оператором switch, котораяпроходит через определенные даты и возвращает важное событие, и если нет важных событий (по умолчанию), оно составляет isImportant = false
var isMainWater = true
func getForMain() -> Waterz {
let database = WaterzBank()
switch getHijriDateNumber() {
case "2-16":
return database.duaMakarem
case "2-17":
return database.duaFaraj
case "2-21":
return database.duaFaraj
default:
isMainWater = false
return getWaterzByDayOfWeek(database)
}
}
Вот как я запланировал локальное уведомление для этого:
func scheduleImportantNotification() {
let content = UNMutableNotificationContent()
let item = getWaterForMain()
content.title = item.entitle ?? "Important Event"
content.body = "Don't forget to read \(item.entitle ?? "this") today!"
var dateComponents = DateComponents()
dateComponents.hour = 18
dateComponents.minute = 15
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: isMainWater)
let request = UNNotificationRequest(identifier: myNotificationID.ImportantNotifiationsID.rawValue, content: content, trigger: trigger)
notificationCenter.add(request)
}
В общем, я попытался repeats: isMainWater
, чтобы он отправлял уведомление, только если isMainWater = true
. Это не сработало. Даже в те дни, когда нет важных событий, я все равно получаю уведомление, и это будет то же важное событие, что и в первый раз. Это не динамично.
Как бы мне этого добиться?