Как добавить полномочия класса защиты данных в мое приложение iOS 5 - PullRequest
2 голосов
/ 11 августа 2011

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

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

FiSSH

Ответы [ 4 ]

4 голосов
/ 04 января 2012

Чтобы защитить файлы в каталоге документов вашего приложения, без какого-либо кода, вы должны добавить в ваше приложение файл authorlements.plist.

В свой файл authorlements.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>
0 голосов
/ 28 марта 2012

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

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

0 голосов
/ 29 августа 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");
}

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

Fissh

0 голосов
/ 25 августа 2011

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

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

...