Besoin d'une protection complète des données lors du traitement de base de données est en arrière-plan

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

Question

Je suis juste coincé au milieu du projet.

Mon objectif est de protéger mes données .

Je suis passé par Nickharris blog au sujet de ( Applications de données de base et l'entreprise iPhone - Protéger votre données)

Mais dans la conclusion il est clairement mentionné que:

Si votre application a besoin de votre magasin de base de données dans un traitement de fond , vous ne peut pas utiliser la protection des données . Toute tentative d'accès aux fichiers qui sont NSFileProtectionComplete fera une exception .

Et j'utilise des données de base dans le traitement de fond.

S'il vous plaît aide à ce sujet. Je veux chiffrer et protéger mes données de toute façon

Merci, Tariq

Était-ce utile?

La solution

Selon le documentation NSFileProtectionComplete dicte que le fichier ne peut être lu (ou ne fonctionne pas) ou d'écriture alors que l'application est en arrière-plan.

Vous devriez être bien pour lire / écrire le magasin SQLite alors que l'application est en cours d'exécution, mais vous n'avez accès alors qu'il est dans le « fond ».

Cela signifie que les opérations qui levier les API de fond comme iOS:

  • Les notifications push
  • Arrière-plan audio / Emplacement
  • achèvement de la tâche (Background)
  • Voice Over IP

n'ont pas accès à votre magasin SQLite. Lorsque l'application est en cours d'exécution mais vous devriez être en mesure d'accéder au NSPersistentStoreCoordinator comme vous le feriez normalement. Je pense qu'un test côté dispositif entraînerait un défaut de créer le coordinateur de stockage permanent de l'une des API de fond.

Autres conseils

Sur iOS 5, vous pouvez utiliser un, mais il y a encore un hic pour chacun d'eux.

  1. NSFileProtectionCompleteUnlessOpen - Le fichier est stocké dans un format crypté sur le disque et doit être ouvert lorsque l'appareil est déverrouillé. Une fois ouvert, le fichier peut continuer à accéder au fichier normalement, même si l'utilisateur verrouille l'appareil.

  2. NSFileProtectionCompleteUntilFirstUserAuthentication - Le fichier est stocké dans un format crypté sur le disque et ne peut être accessible qu'après l'appareil a démarré. Après que l'utilisateur déverrouille le dispositif pour la première fois, votre application peut accéder au fichier et continuer à y accéder même si l'utilisateur verrouille ensuite l'appareil.

Source: iOS Developer Library

Faites vos appels d'accès aux fichiers dans le thread principal - il y a une méthode très utile sur NSObject qui devrait vous aider:)

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

L'espoir qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top