我们正在开发一个可以接收静默推送通知的应用程序。收到通知后,应用程序会进入后台并执行一些代码。在此代码执行期间,应用程序需要访问受保护级别kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly保护的钥匙串中的项目。根据这篇 SO 帖子(如果 UIBackgroundModes 中定义的远程通知和新的推送通知来了,iOS 在重启后是否在后台启动应用程序?)和Apple 的应用程序生命周期图,应用程序在设备重启后处于未运行状态,因此可以在用户至少将其启动到前台一次之前,不会将其放入后台。
但是,Apple 还提供了保护级别kSecAttrAccessibleAlways。如果一个应用程序在首次启动后只能在后台运行,那么kSecAttrAccessibleAlways属性的用途是什么?用户不是必须先解锁设备才能让应用程序在后台运行吗?在什么情况下,应用程序可以在设备重启后但在用户解锁设备之前运行?Apple 还为应用程序沙箱容器中的文件提供保护级别NSFileProtectionCompleteUntilFirstUserAuthentication。在什么情况下,应用程序甚至可以在用户重新启动后解锁设备之前尝试访问其文件?非常感谢您对此的任何见解,谢谢。