Ich möchte Benutzerdaten in einer App verschlüsseln, und der NSFileProtection-Mechanismus sieht dafür perfekt aus.
Dieser SO-Frage / Antwort-Thread wies mich auf das WWDC-2011-Video Absichern von iOS-Apps , die den Hinweis "zu gut, um wahr zu sein" geben, um den Datenschutz in der App festzulegen über Anrechte (siehe ab 33 Minuten).
Also, ich habe das für meine iOS 5.x + App ausprobiert und bin auf das Problem gestoßen, wo es sich über Ungültige Berechtigungen .
Ich habe Data Protection für die spezifische App über das iOS Provisioning Portal konfiguriert und meine App Provisioning aktualisiert, also sollte theoretisch alles eingestellt sein, aber ich bekomme immer noch den Fehler.
Wenn ich die spezifische FileProtectionComplete-Einstellung aus dem Berechtigungsnachweis lösche, wird die Anwendung ohne den Fehler "Ungültiger Berechtigungsnachweis" ausgeführt.
Bei der Untersuchung habe ich auch gesehen, dass einige Leute ihre Apps bekommen abgelehnt (an dem Punkt, an dem sie die Binärdatei hochladen), da dies nicht unterstützt wird (oder veraltet?). Bitte beachten Sie, dass ich speziell nach Datenschutz und nicht nach Passbook frage.
In diesem Stadium denke ich, vielleicht ist es wirklich, "zu gut, um wahr zu sein". Also, ich bin dabei, dieses magischen Berechtigungsflag aufzugeben und stattdessen die programmatische Methode zu verwenden, NSFileProtectionComplete als Schreiboption hinzuzufügen.
Aber bevor ich das tue, kann jemand bestätigen, dass es möglich war, Datenschutz einfach unter Verwendung des Berechtigungskennzeichens erfolgreich hinzuzufügen? Danke.
NSFileProtectionComplete
wird nicht mehr über Berechtigungen unterstützt. Stattdessen wird es im Bereitstellungsprofil angegeben.
Ich hatte genau das gleiche Problem wie du. Als ich versuchte, auf einem Gerät zu bauen und zu laufen, erhielt ich folgende Warnung:
Die ausführbare Datei wurde mit ungültigen Berechtigungen signiert.
Die Berechtigungen, die im Code Signing Ihrer Anwendung angegeben sind Die Berechtigungsdatei stimmt nicht mit den in Ihrer Bereitstellung angegebenen Berechtigungen überein Profil.
(0xE8008016).
In der Konsole hat es sich als dieser Fehler manifestiert:
6. Mai 16.18.13 XXXXX installd [54]: Berechtigung 'DataProtectionClass' hat einen Wert, der bei einer Bereitstellung nicht zulässig ist Profil
Irgendwann habe ich die richtigen Einstellungen gefunden. Sie müssen sich beim Entwicklerportal anmelden und den Datenschutz für die App-ID aktivieren, die dem von Ihnen verwendeten Bereitstellungsprofil zugeordnet ist. Siehe das Bild unten:
Es würde nicht funktionieren, wenn ich den Platzhalter für die Profil-ID verwende (d. h. my.company.app. *), also musste ich einen neuen vollwertigen erstellen. Es funktioniert für mich mit meiner Entitlements.plist wie folgt aussehen:
%Vor%und mit meinem Profilabschnitt wie folgt aussehen: ....
%Vor%....
Ich habe den Datenschutz mit Berechtigungen versucht und es funktioniert gut. Der Trick besteht darin, den Eintrag Ihrer Berechtigungsdatei im xcode-Projekt genauso zu behalten wie den des Provisioning-Profils.
Insbesondere sollten die folgenden zwei Einstellungen in der Datei für Berechtigungen und im Provisioning-Profil identisch sein: "com.apple.developer.default-data-protection" - Ich habe dies als NSFileProtectionComplete eingestellt. "application-identifier" - Ich verwende keine Platzhalter in Bezeichnern, obwohl ich denke, dass es auch funktionieren sollte.
Tags und Links ios data-protection entitlements