设备锁定时的文件安全性,并在iOS7中进行后台提取



我正在使用NSFileProtectionKey属性的文件安全性,如下所示:

[[NSFileManager defaultManager] setAttributes:@{NSFileProtectionKey : NSFileProtectionComplete} ofItemAtPath:coreDataFilePath error:NULL];

因此,当设备密码锁定时,无法打开该路径中的任何文件。问题是,即使设备被锁定,iOS7应用程序也可以在后台运行。当像这样运行时,核心数据[NSManagedObjectContext save:]将失败并显示错误:

NSCocoaErrorDomain, 134030, 操作无法™完成。 (可可错误 134030。{ NSSQLiteErrorDomain = 23;NSUnderlyingException ="更新最大 pk 失败:授权 被拒绝";}

如何处理这种情况?

首先,请参阅WWDC 2013视频中的会话204"多任务处理的新增功能"。它涵盖了这种情况。

您可以采用多种方法(按安全首选项的顺序):

  • 将数据写入另一个位置(使用 NSFileProtectionCompleteUnlessOpen ),直到设备解锁,然后合并。这通常是首选方法。
  • 将主数据库设置为NSFileProtectionCompleteUnlessOpen并使其保持打开状态。
  • 将数据库设置为 NSFileProtectionCompleteUntilFirstUserAuthentication 。这通常是最糟糕的方法。

相关内容

最新更新