Как добавить права класса защиты данных в мое приложение для iOS 5

Я был во всем Интернете, включая сайт разработчиков Apple, но я не могу найти никаких инструкций о том, как установить атрибут каталога приложения / Documents NSFileProtectionKey = NSFileProtectionComplete. Я установил значение при первом запуске приложения, но есть ли способ установить его иначе? Например, через какой-нибудь флажок X-Code, plist или что-то еще.

Также в соответствующей заметке: любые файлы, хранящиеся в каталоге с классом защиты данных NSFileProtectionComplete, автоматически обрабатываются как тот же класс защиты, что и его каталог?

Огромное спасибо,

Фиш


person gadildafissh    schedule 10.08.2011    source источник


Ответы (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>
person mmich    schedule 04.01.2012
comment
Для справки см. видео WWDC 2011 208 «Защита приложений iOS». Этот ключ прикрыт на 38:12, но все видео стоит посмотреть. - person Mike Weller; 01.02.2012
comment
Есть идеи, поддерживается ли этот подход к правам в iOS 4.0+? Я искал документацию, но нигде не нашел упоминания об этом, кроме видео 208 WWDC 2011. - person Ian Kershaw; 09.02.2012
comment
Это не работает в iOS 9. Может ли кто-нибудь ответить на этот вопрос, если вы уже пробовали? stackoverflow.com/questions/39151959 / - person EmbCoder; 26.08.2016

Сессия WWDC 208 прошлась по этому поводу, я думаю, вы создаете файл прав с этим ключом, и вам не нужно писать код.

Я еще не делал этого, поэтому я не совсем уверен, что это работает.

person David Dunham    schedule 25.08.2011

Это хак, который я придумал, пока не понял, как правильно установить защиту каталога / 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");
}

Я просто вызываю приведенный выше код при загрузке приложения, чтобы установить защиту каталога документов, если она еще не установлена.

Фиш

person gadildafissh    schedule 29.08.2011

http://devforums.apple.com/message/627887 Форумы разработчиков: применение права DataProtectionClass

Я нашел эту ссылку, и этот метод предоставления прав в настоящее время не работает, и я зарегистрировал проблему с ошибкой, поэтому нам придется делать файл за файлом.

person Tomohisa Takaoka    schedule 28.03.2012