我在以下位置处理推送通知
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
AppDelegate.swift
模块中的方法当应用程序处于 Activity 状态时,我在应用程序窗口中显示自己的横幅:
if application.applicationState == .active {
// create banner
banner.show()
}
当应用程序处于后台iOS时,系统显示系统横幅,并且当
application.applicationState
具有.background
值时,我的应用程序会收到信息。如果用户点击标题应用程序再次接收数据,但是application.applicationState
是.inactive
-在这种情况下,我将打开在通知中接收到信息的实体项目。但是,当使用密码锁定设备(即要求输入代码或指纹)时:
.background
密码解锁后和未锁定背景如何区别后台状态?
我确实尝试通过处理设置标志
applicationDidBecomeActive(_ application: UIApplication)
和
applicationWillEnterForeground(_ application: UIApplication)
事件但是
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
提前致电
最佳答案
您可以使用isProtectedDataAvailable
的 UIApplication
属性来确定设备当前是否被锁定
let isUnlocked = UIApplication.shared.isProtectedDataAvailable
然后,您可以结合使用
isUnlocked
和applicationState
来确定您处于后台,但设备已锁定并进行相应处理。请注意,如果未在设备上启用数据保护(例如未设置密码),则
isProtectedDataAvailable
将始终返回true
。关于ios - 如何处理锁定密码的iOS设备上的推送通知横幅上的点击?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48002584/