2013-09-23 16 views
5

Używam zabezpieczenie plików przy użyciu NSFileProtectionKey atrybut tak:zabezpieczeń plików gdy urządzenie jest zablokowane i tło sprowadzić w iOS7

[[NSFileManager defaultManager] setAttributes:@{NSFileProtectionKey : NSFileProtectionComplete} ofItemAtPath:coreDataFilePath error:NULL]; 

Tak, nie ma pliku w tej ścieżce można otworzyć, gdy urządzenie jest zablokowane hasło. Problem polega na tym, że aplikacje na iOS7 mogą działać w tle, nawet gdy urządzenie jest zablokowane. Kiedy działa jak ten CoreData [NSManagedObjectContext save:] zakończy się niepowodzeniem z błędem:

NSCocoaErrorDomain, 134030, The operation couldn’t be completed. (Cocoa error 134030.) { NSSQLiteErrorDomain = 23; NSUnderlyingException = "Updating max pk failed: authorization denied"; }

Jak radzić sobie z taką sytuacją?

Odpowiedz

7

Najpierw zobacz sesję 204 "Co nowego w wielozadaniowości" z filmów WWDC 2013. Obejmuje to przypadek.

w kolejności preferencji bezpieczeństwa Istnieje kilka metod, które można podjąć,:

  • Wpisz dane do innej lokalizacji (używając NSFileProtectionCompleteUnlessOpen), aż urządzenie zostanie odblokowany, a następnie scalić. Jest to zazwyczaj preferowane podejście.
  • Ustaw swoją główną bazę danych na NSFileProtectionCompleteUnlessOpen i pozostaw ją otwartą.
  • Ustaw bazę danych na NSFileProtectionCompleteUntilFirstUserAuthentication. Jest to na ogół najgorsze podejście.
+0

Jeśli chodzi o "Zapisywanie danych w innym miejscu (przy użyciu NSFileProtectionCompleteNieOpenOpen) do momentu odblokowania urządzenia, a następnie scalenia. Jest to zazwyczaj preferowane podejście". W jaki sposób przechowujesz dane, które mają być zapisane w danych podstawowych, do momentu, aż użytkownik zdecyduje się odłączyć urządzenie. – user3687

+0

Albo wpisując format sieci (często JSON). Lub serializacji obiektów za pomocą NSCoding. W obu przypadkach, zapisując do pliku, aż do odblokowania danych podstawowych. –

+0

Nie zapisywanie pliku raw na dysku stwarza kolejne ryzyko dla bezpieczeństwa aplikacji. W każdym razie masz jakieś sugestie dotyczące sposobu wykrywania, czy podstawowe dane są odblokowane. – user3687