2010-11-22 2 views
2

Я просто застрял в середине проекта.Нужна полная защита данных, в то время как обработка основных данных находится в фоновом режиме

Моя цель защитить мои данные.

Я прошел через Nickharris блог о (Core Data and Enterprise iPhone Applications – Protecting Your Data)

Но в заключении ясно сказано, что:

Если ваше приложение нуждается в вашем Core, хранилище данных в любом фоновой обработки, то вы не может использовать защиту данных. Любая попытка доступа к файлам, которые являются NSFileProtectionComplete, вызовет исключение.

И я использую основные данные в фоновом режиме.

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

Спасибо, Тарика

+0

Какой фоновой обработки вы делаете? –

ответ

4

В соответствии с documentation NSFileProtectionComplete указывает, что файл не может быть прочитан или записан, пока приложение находится в фоновом режиме (или не работает).

Вы должны быть в порядке, чтобы читать/записывать хранилище SQLite во время работы приложения, однако у вас не будет доступа к нему, пока он находится в «фоновом режиме».

Это означает, что операции, которые позволяют эффективно использовать фоновые интерфейсы IOS, как:

  • уведомлений Push-
  • Фоновая Аудио/Расположение
  • завершение
  • Task (Background)
  • Voice Over IP

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

-2

Сделайте вызовы доступа к файлам в главном потоке - есть очень полезный метод на NSObject, который должен помочь вам :)

// When you need to get the data from the file do this : 
NSData *data = [self performSelectorInMainThread:@selector(getFileData:) withObject:filename waitUntilDone:YES]; 


// And somewhere else in your class have this method 
- (NSData *)getFileData:(NSString *)filename { 
    ... 
    // Get data from file and return it 
    .... 
} 

Надеюсь, что помогает.

+1

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

5

На iOS 5 вы можете использовать любой из них, но для каждого из них все еще есть улов.

  1. NSFileProtectionCompleteUnlessOpen - Файл хранится в зашифрованном виде на диске и должен быть открыт, когда устройство разблокируется. После открытия файл может продолжать нормально обращаться к файлу, даже если пользователь блокирует устройство.

  2. NSFileProtectionCompleteUntilFirstUserAuthentication - файл хранится в зашифрованном виде на диске и недоступен до тех пор, пока устройство не загрузится. После того, как пользователь впервые откроет устройство, ваше приложение может получить доступ к файлу и продолжить доступ к нему, даже если пользователь впоследствии заблокирует устройство.

Источник: iOS Developer Library

+0

Какие уловы? Какой из них вы бы порекомендовали? – vomako