如何在密码锁定的iOS设备上点击推送通知横幅?

时间:2017-12-28 06:22:50

标签: ios swift push-notification

我在

处理推送通知
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:)

之前的电话

2 个答案:

答案 0 :(得分:2)

您可以使用UIApplication

isProtectedDataAvailable属性来识别设备当前是否已被锁定
let isUnlocked = UIApplication.shared.isProtectedDataAvailable

然后,您可以使用isUnlockedapplicationState的组合来确定您处于后台,但设备已被锁定并相应处理。

请注意,如果未在设备上启用数据保护,则isProtectedDataAvailable将始终返回true

答案 1 :(得分:0)

我认为以下线程将解决您的问题: How to differentiate between screen lock and home button press on iOS5?

我没有尝试过,但人们说它的工作非常好,甚至没有应用审批流程的问题。