Precisa de proteção de dados completa enquanto o processamento de dados do núcleo está em segundo plano

StackOverflow https://stackoverflow.com/questions/4242977

Pergunta

Estou preso no meio do projeto.

Meu objetivo é proteger meus dados.

Eu passei pelo blog de Nickharris sobre (Dados principais e aplicativos do iPhone corporativo - protegendo seus dados)

Mas na conclusão, é mencionado claramente que:

Se o seu aplicativo precisar do seu Armazenamento de dados principais em qualquer processamento de fundo, então você não pode usar proteção de dados. Qualquer tentativa de acessar arquivos que são O NSFileProtectionComplete causará uma exceção.

E estou usando dados principais no processamento em segundo plano.

Por favor, ajude sobre isso. Eu quero criptografar e proteger meus dados de qualquer maneira

Obrigado, Tariq

Foi útil?

Solução

De acordo com documentação O NSFileProtectionComplete determina que o arquivo não pode ser lido ou gravado para enquanto o aplicativo estiver em segundo plano (ou não está em execução).

Você deve ficar bem em ler / escrever a loja SQLite enquanto o aplicativo estiver em execução, mas você não terá acesso a ele enquanto estiver no "fundo".

Isso significa que as operações que aproveitam as APIs de fundo do iOS como:

  • Notificações via push
  • AUDIO / LOCAL
  • Conclusão da tarefa (plano de fundo)
  • Voz sobre IP

Não terá acesso à sua loja SQLite. Quando o aplicativo estiver em execução, no entanto, você poderá acessar o NSPERSistentStoreCoordinator como normalmente faria. Suspeito que um teste lateral do dispositivo resultaria em uma falha em criar o coordenador persistente da loja a partir de uma das APIs de segundo plano.

Outras dicas

No iOS 5, você pode usar qualquer um, mas ainda há um problema para cada um deles.

  1. NSFileProtectionCompleteUnlessOpen - O arquivo é armazenado em um formato criptografado no disco e deve ser aberto enquanto o dispositivo é desbloqueado. Uma vez aberto, seu arquivo pode continuar a acessar o arquivo normalmente, mesmo que o usuário bloqueie o dispositivo.

  2. NSFileProtectionCompleteUntilFirstUserauthentication - O arquivo é armazenado em um formato criptografado no disco e não pode ser acessado até que o dispositivo seja inicializado. Depois que o usuário desbloqueia o dispositivo pela primeira vez, seu aplicativo pode acessar o arquivo e continuar a acessá -lo, mesmo que o usuário bloqueie posteriormente o dispositivo.

Fonte: Biblioteca de desenvolvedores do iOS

Faça as chamadas de acesso ao arquivo no tópico principal - há um método realmente útil no NSObject que deve ajudá -lo :)

// 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
    ....
}

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top