Saz*_*han 10 xcode data-protection objective-c ios appdelegate
isProtectedDataAvailable是真的,但applicationProtectedDataDidBecomeAvailable在 iOS 10~20 秒后被调用,这意味着isProtectedDataAvailable在调用回调之前应该是假的。
我正在开发iOS内置的应用程序Objective C。我已经从 AppStore 配置文件和 xcode plist 为我的应用程序启用了数据保护(当前配置为 FirstUserAuthentication)。
由于 Apple 的数据保护政策,我们的数据库在设备重启和首次解锁后几秒钟内无法访问。因此,当应用程序启动时,我使用以下逻辑限制任何数据库操作。
if([[UIApplication sharedApplication] isProtectedDataAvailable]) {
//access data
}else {
// wait for applicationProtectedDataDidBecomeAvailable callback
}
Run Code Online (Sandbox Code Playgroud)
我发现了一些意想不到的行为。即使[[UIApplication sharedApplication] isProtectedDataAvailable]返回true,在从我上面的代码逻辑中调用10~20秒(宽限期)applicationProtectedDataDidBecomeAvailable回调作为其中的一部分后,由于实际上仍受操作系统保护,数据库被访问并失败。
有什么我想念的吗?当实际受保护的数据尚不可用时,为什么iOS返回[[UIApplication sharedApplication] isProtectedDataAvailable]值为 true?
我正在使用 Xcode 11.0,经过测试的设备 OS 13.2。
对于日志中的某些情况,我发现[[UIApplication sharedApplication] isProtectedDataAvailable]返回 1 但 NSUserDefault 仍然无法访问。可能的原因是什么?
isProtectedDataAvailable - 如果启用了数据保护并且设备当前被锁定,则此属性的值为 false。如果设备未锁定或未启用内容保护,则此属性的值设置为 true。当此属性的值为 false 时,您的应用程序无法读取或写入分配了 complete 或 completeUnlessOpen 保护密钥的文件。用户必须先解锁设备,然后您的应用才能访问它们。 NSFileProtectionCompleteUntilFirstUserAuthentication - 在用户第一次解锁设备后,您的应用程序可以访问该文件并继续访问它,即使用户随后锁定了设备。
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |