Sie können keine Datei im Dateisystem verwenden. Jeder, der es ausprobieren oder knacken möchte, wird schlau genug sein, um den Dateizugriff über grundlegende Standard-OSX-Funktionen zu verfolgen. Also eine Datei hinzugefügt wird, ist out. Nicht nur das, aber es ist ein schlechtes Verhalten, Dateien zu erstellen, die Sie nicht entfernen, wenn die App deinstalliert wird. Personen sollten nach dem Löschen Ihrer Test-App keine Ressourcen verbrauchen.
Wie bereits erwähnt, ist es auch eine schlechte Idee, in Ihrem Paket herumzualbern. Dies gibt Ihnen drei grundlegende Optionen.
1) Mach dir keine Sorgen zu viel. Verwenden Sie ein einfaches Ablaufsystem, das die Standardspeicherorte und -methoden verwendet. Sie können weiterhin Verschlüsselung in den Daten verwenden, die Sie speichern, aber wissen Sie, dass auch das kaputt gehen wird. Akzeptieren Sie, dass eine Urheberrechtsverletzung eintritt, sofern Ihre App nicht völlig unpopulär ist.
2) Verwenden Sie einen Netzwerkanruf und führen Sie die Überprüfung auf dem Server durch. Dies würde erfordern, dass die App immer in der Lage ist, Ihren Dienst zu erreichen, um ausgeführt zu werden. Dies ist im Allgemeinen keine gute Idee. Was ist, wenn Ihre Server ausgefallen sind? Was ist, wenn sie offline sind? Was passiert, wenn ein Netzwerkproblem zwischen Ihnen und Ihnen auftritt? Alle diese Szenarien werden passieren. Wenn dies der Fall ist, werden Sie wahrscheinlich Kunden verlieren, es sei denn, Ihre App benötigt bereits eine Verbindung zu Ihren Servern (wie beispielsweise Twitter oder Facebook).
3) Seien Sie ein "böser Bürger", indem Sie sich mit dem Anwendungspaket herumärgern oder verwaiste Dateien zurücklassen. Wenn Sie dies tun, stellen Sie zumindest sicher, dass sie eindeutig benannt sind, so dass sie sich offensichtlich auf Ihre Bewerbung beziehen.
Letztendlich ist es wichtig, dass Sie keine Sicherheit auf dem Computer eines Benutzers haben. Es gehört ihnen. Das bedeutet, dass sie physischen Zugang haben, der jeden Versuch, sie daran zu hindern, zu graben, ziemlich zunichte macht. Sie können es auch so sehen: Je technisch orientierter Ihr Markt ist, desto unwahrscheinlicher werden Sie schlauer als wir alle und Ihre "Sicherheit" wird geknackt werden.Wenn Sie für ein nicht-technisches Publikum entwerfen, dann können Sie sich vorstellen, dass es im Allgemeinen nicht darum geht, es zu knacken oder nach einem zu suchen.
Sie können Ihre Ressourcen dafür verwenden, die App besser zu machen, oder Ihnen ein besseres Gefühl geben, wenn Sie sie nach der Testphase nicht mehr verwenden. Einer davon kann Ihren Umsatz steigern und einer wird nicht.
[edit] Auch sollte ich darauf hinweisen, dass eine der häufigsten (wenn nicht das üblichste) Mittel, diese Dinge zu knacken, die Binärdatei zu ändern ist. Wenn Sie also Code-Signing durch Bündel-Mucking brechen, würden Sie sich tatsächlich für diese Methode öffnen, weil Sie einen der besseren Schutzmechanismen, die Sie haben, gebrochen hätten. Bei den meisten Rissen werden Binärdateien so geändert, dass die Routine, die die Prüfungen durchführt, immer eine erfolgreiche Authentifizierung zurückgibt.
Das Speichern innerhalb des Anwendungspakets ist möglicherweise * etwas * schwieriger für den Benutzer zu umgehen. Es hängt davon ab, wie gut der Schutz sein soll. – David
Es muss ziemlich gut sein, weil ich nicht möchte, dass der Benutzer die Anwendung überhaupt nach Ablauf der Testversion verwenden kann – Daniel
Ich habe gerade NSUserDefaults gesucht encodeObject: forKey :, werden sie vielleicht ausreichen? – Daniel