如何将Data Protection Class Entitlements添加到我的iOS 5应用程序中

时间:2011-08-10 21:33:47

标签: ios nsfilemanager data-protection entitlements

我已经遍布网络,包括Apple的开发网站,但我找不到任何有关如何设置应用程序/文档目录属性NSFileProtectionKey = NSFileProtectionComplete的说明。我在应用程序第一次运行时设置了值,但有没有办法设置它呢?比如通过一些X-Code复选框,plist或其他。

另请注意:存储在NSFileProtectionComplete数据保护类目录下的任何文件是否自动被视为与其目录相同的保护类?

非常感谢,

Fissh

4 个答案:

答案 0 :(得分:4)

要保护应用程序文档目录中的文件,不需要任何代码,您必须向应用程序添加entitlements.plist。

在您的entitlements.plist中,添加“DataProtectionClass”键,其中包含“NSFileProtectionComplete”值。只要设备被锁定,您的文件就会自动受到保护。

这是一个例子

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
    <dict>
      <key>DataProtectionClass</key>
      <string>NSFileProtectionComplete</string>
    </dict>
  </plist>

答案 1 :(得分:0)

WWDC会话208对此进行了轻松,我认为您使用该密钥创建了一个授权文件,并且您不需要编写代码。

我还没有这样做,所以我不确定它是否有效。

答案 2 :(得分:0)

这是我想出的黑客攻击,直到我弄清楚如何正确设置/ Documents目录保护。

NSError *error;
NSDictionary *attrs = [self attributesOfItemAtPath:DOCUMENTS_FOLDER error:&error];
if(![[attrs objectForKey:NSFileProtectionKey] isEqual:NSFileProtectionComplete])
{
    attrs = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey];
    BOOL success = [self setAttributes:attrs ofItemAtPath:DOCUMENTS_FOLDER error:&error];
    if (!success) 
        NSLog(@"Set ~/Documents attr NOT successfull");
}

我只是在加载应用程序时调用上面的代码,如果尚未设置文档目录保护,则设置它。

Fissh

答案 3 :(得分:0)

http://devforums.apple.com/message/627887 开发人员论坛:应用DataProtectionClass权利

我找到了这个链接,这个Entitlements方法目前无法正常运行并提交bug问题,所以我们必须逐个文件。