当应用程序关闭时,通知 willPresent 不会调用

Notification willPresent won't calling when app is closed

我试图只在工作日通知用户,不想用 for 循环来通知用户,所以通知重复 bool 为 true。当应用程序打开时,willPresent 函数可以工作,但是当应用程序进入后台时,willPresent 函数不会被应用程序调用并在周末向用户发送通知,这是我不想的。

我已经在 didFinishLaunchingWithOptions

设置了 UNUserNotificationCenter.current().delegate = self

这是我的 AppDelegate 中的 willPresent 函数:

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)!
    }
}

如有任何帮助,我们将不胜感激。谢谢

那是因为你应该使用didReceive方法来接收后台通知