Локальные push-уведомления в зависимости от состояния - Swift - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь установить повторное уведомление о «важных событиях», когда пользователи получают уведомление о проверке моего приложения на основе определенных дат, которые имеют важное событие. Поэтому он отправляет уведомление только в том случае, если сегодня происходит важное событие.

У меня есть глобальная переменная 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. Это не сработало. Даже в те дни, когда нет важных событий, я все равно получаю уведомление, и это будет то же важное событие, что и в первый раз. Это не динамично.

Как бы мне этого добиться?

...