首页 文章

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

提问于
浏览
2

我处理推送通知

application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

AppDelegate.swift 模块中的方法

当应用程序处于活动状态时,我会在应用程

if application.applicationState == .active {
    // create banner
    banner.show()
}

当应用程序在后台iOS show system banner时,我的应用程序在 application.applicationState 具有 .background 值时收到信息 . 如果用户点击 Banner 应用程序再次接收数据但 application.applicationState.inactive - 在这种情况下,我打开通知中收到信息的实体项目 .

但是当设备被密码锁定时(即需要代码或指纹):

  • 应用程序仅在用户点击 Banner 时才接收通知数据,而不是仅在后台模式下(当设备未锁定密码时)

  • 解锁后应用程序状态仍为 .background

密码解锁后的背景状态和没有锁定的背景怎么样?

我确实通过处理尝试设置标志

applicationDidBecomeActive(_ application: UIApplication)

applicationWillEnterForeground(_ application: UIApplication)

事件但是

application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

早点打电话

2 回答

  • 2

    您可以使用 UIApplicationisProtectedDataAvailable属性来识别设备当前是否已被锁定

    let isUnlocked = UIApplication.shared.isProtectedDataAvailable
    

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

    请注意,如果未在设备上启用数据保护, isProtectedDataAvailable 将始终返回 true (例如,未设置密码) .

  • 0

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

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

相关问题