我在以下位置处理推送通知

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
    

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

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

    关于ios - 如何处理锁定密码的iOS设备上的推送通知横幅上的点击?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48002584/

    10-09 01:02
    查看更多