Нужна полная защита данных, пока базовая обработка данных находится в фоновом режиме - PullRequest
2 голосов
/ 22 ноября 2010

Я просто застрял в середине проекта.

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

Я просмотрел блог Nickharris ( Основные данные и корпоративные приложения для iPhone - защита ваших данных )

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

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

И я использую основные данные в фоновой обработке.

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

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

Ответы [ 3 ]

5 голосов
/ 09 декабря 2011

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

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

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

Источник: iOS DeveloperБиблиотека

4 голосов
/ 22 ноября 2010

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

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

Это означает, что операции, использующие фоновые API-интерфейсы iOS, такие как:

  • Push-уведомления
  • Фоновое аудио / Местоположение
  • Завершение задачи (фон)
  • Голос по IP-адресу

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

0 голосов
/ 22 ноября 2010

Сделайте ваши обращения к файлам в главном потоке - на 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
    ....
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...