为什么设备锁定时我可以访问文件?(iOS)
我的应用程序已打开数据保护,我创建了一个文件,其中包含为什么设备锁定时我可以访问文件?(iOS),ios,Ios,我的应用程序已打开数据保护,我创建了一个文件,其中包含NSFileProtectionComplete + (void)createLogFile { NSString *deviceModel = [Utils getDeviceModel]; NSString *appVersion = [Utils getAppVersion]; NSData *initData = [[NSString stringWithFormat:@"%@-%@\n============
NSFileProtectionComplete
+ (void)createLogFile {
NSString *deviceModel = [Utils getDeviceModel];
NSString *appVersion = [Utils getAppVersion];
NSData *initData = [[NSString stringWithFormat:@"%@-%@\n================================\n\n\n", deviceModel, appVersion] dataUsingEncoding:NSUTF8StringEncoding];
[[NSFileManager defaultManager] createFileAtPath:[self logFilePath]
contents:initData
attributes:@{NSFileProtectionKey: NSFileProtectionComplete}];
}
当我锁定设备时,应用程序保护的数据将变得不可用:将被调用
- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSData *key = [MyKeychain getKey];
NSString *log = [NSString stringWithFormat:@"The key is:\n %@", key];
[MyFileLogger logInfo:log];
});
}
然后我可以在文件中找到结果,这意味着我可以在设备锁定时写入该文件。
当设备被锁定时,数据保护不应该阻止访问文件吗?怎么了
--更新--(添加方法登录信息:)
根据对的回答,在调用
ApplicationProtectedDataWillomeUnavailable
方法后,在数据保护激活之前有10秒的“宽限期”
如果将时间延迟从5秒增加到11秒,您应该会看到数据没有写入日志文件
我可以通过示例代码和11秒的延迟观察到这一点。您可以显示
logInfo
的代码吗?您是否已将数据保护权限添加到您的应用程序中?@Paulw11是的,它与应用程序ID匹配。谢谢,尝试了11秒,但我再也看不到日志。当我们使用ApplicationProtectedData时,是否应考虑相同的宽限期将变得可用?
+ (void)logInfo:(NSString *)str {
NSString *info = [self wrapWithTimestamp: str];
NSString *logFilePath = [Utils logFilePath];
if (![[NSFileManager defaultManager] fileExistsAtPath:logFilePath]) {
[Utils createLogFile];
}
NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:logFilePath];
[handle truncateFileAtOffset:[handle seekToEndOfFile]];
[handle writeData:[info dataUsingEncoding:NSUTF8StringEncoding]];
[handle closeFile];
}