基于条件的本地推送通知-Swift

基于条件的本地推送通知-Swift,swift,uilocalnotification,Swift,Uilocalnotification,我正在尝试设置一个“重要事件”重复通知,通知用户根据发生重要事件的特定日期检查我的应用程序。因此,它只在今天有重要事件时发送通知 我有一个全局变量isImportant,它被设置为true 然后我有一个带有switch语句的函数,该语句遍历特定日期并返回重要事件,如果没有重要事件(默认),它将使isImportant=false var isMainWater = true func getForMain() -> Waterz { let database = WaterzBank(

我正在尝试设置一个“重要事件”重复通知,通知用户根据发生重要事件的特定日期检查我的应用程序。因此,它只在今天有重要事件时发送通知

我有一个全局变量
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)
}
因此,基本上我尝试了
重复:isMainWater
,这样它只有在
isMainWater=true
时才会发送通知。那没用。即使在没有重大事件的日子里,我仍然会收到通知,这将是与第一次相同的重要事件。它不是动态的


如何实现这一点?

如果不希望重复通知,则应将“重复”设置为“假”。如果您将repeat设置为true,则通知将一次又一次地出现,并且我希望在isMainWater=true时重复该通知。我该怎么做?要在不同的日期触发本地通知,必须在所需的情况下设置dateComponents.day、dateComponents.month甚至dateComponents.year。