我在
处理推送通知application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
AppDelegate.swift
模块中的方法
当应用程序处于活动状态时,我会在应用程序窗口中显示自己的横幅:
if application.applicationState == .active {
// create banner
banner.show()
}
当应用程序在后台iOS show system banner时,我的应用程序会在application.applicationState
具有.background
值时收到信息。如果用户点击横幅应用程序再次接收数据,但application.applicationState
为.inactive
- 在这种情况下,我会打开通知中收到信息的实体项目。
但是当设备被密码锁定时(即需要代码或指纹):
.background
如何在密码解锁后将背景状态与没有锁定的背景区分开来?
我确实尝试通过处理设置标志
applicationDidBecomeActive(_ application: UIApplication)
和
applicationWillEnterForeground(_ application: UIApplication)
事件但是
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
之前的电话
答案 0 :(得分:2)
您可以使用UIApplication
isProtectedDataAvailable
属性来识别设备当前是否已被锁定
let isUnlocked = UIApplication.shared.isProtectedDataAvailable
然后,您可以使用isUnlocked
和applicationState
的组合来确定您处于后台,但设备已被锁定并相应处理。
请注意,如果未在设备上启用数据保护,则isProtectedDataAvailable
将始终返回true
。
答案 1 :(得分:0)
我认为以下线程将解决您的问题: How to differentiate between screen lock and home button press on iOS5?
我没有尝试过,但人们说它的工作非常好,甚至没有应用审批流程的问题。