UNUserNotificationCenterDelegate本地通知didReceive响应方法针对不同的应用程序状态处理它

时间:2018-06-29 21:38:08

标签: ios swift appdelegate unnotificationrequest

根据应用程序的最后状态,当调用UNUserNotificationCenterDelegate的didReceive响应方法时,我尝试执行2个不同的任务。

如果该应用程序在前台运行,或者如果该应用程序已关闭但没有被杀死(我认为该状态是背景状态),那么我将执行一项任务,如果该应用程序被杀死(不活动),我将执行另一项任务。

问题是无论应用程序是否被杀死,applicationState都使我处于非活动状态。

func userNotificationCenter(_ center: UNUserNotificationCenter,didReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    let application = UIApplication.shared
    if application.applicationState == .active || application.applicationState == .background{
        let typeInt: Int = userInfo["dataType"] as? Int ?? NotificationManager.DataType.reward.rawValue
        let type = NotificationManager.DataType(rawValue: typeInt)!
        NotificationManager.shared.handleNotification(for: type, userInfo: userInfo)
    }else{
        UserDefaults.standard.set(userInfo, forKey: "noti")
        UserDefaults.standard.synchronize()
    }
    completionHandler()
}

我注意到的一件事是,如果我关闭应用程序而没有杀死它并重新打开它,则该应用程序将从原来的位置开始,但是当我关闭它并触摸通知时,该应用程序将运行启动屏幕。

我不知道我是否误解了applicationState,还是应该尝试其他方法。

0 个答案:

没有答案