Nachdem der Benutzer seinen Lizenzschlüssel eingegeben hat, aktiviert sich meine Anwendung mit diesem Schlüssel (online). Wie speichere ich diesen aktivierten Status und den Lizenzschlüssel, damit die App beim nächsten Öffnen der App weiß, dass sie bereits aktiviert ist?Wie sollte meine Cocoa-Anwendung den Lizenzschlüssel des Benutzers speichern?
Antwort
Ich schrieb die Benutzer Lizenzschlüssel und in „~/Library/Application Support/MyApplication/E-Mail in eine Datei passende License.myApplicationlicense ". Ich denke, das ist besser als die Verwendung von NSUserDefaults, da der Benutzer erwartet, dass er in der Lage ist, seine Prefs zu werfen, ohne dass etwas dramatisches passiert, wie das erneute Registrieren seiner Anwendung.
Die Datei ist nur der Inhalt eines NSDictionary geschrieben mit writeToFile: atomically: und lesen Sie mit DictionaryWithContentsOfFile :. Die Inhalte sind nicht verschlüsselt, aber das ist normalerweise nicht wichtig, abhängig davon, wie Ihr Lizenzschema funktioniert.
Ich würde auch vorschlagen, dass Sie einen Blick auf AquaticPrime werfen, wenn Sie dies bereits getan haben. Ich beschloss, mein eigenes Lizenzmodell zu erstellen, weil ich Lizenzcodes und keine Lizenzdateien wollte. Am Ende wäre ich besser in AquaticPrime geblieben, das kryptografisch sicherer ist als mein eigenes Lizenzsystem. Als ich AquaticPrime während meiner Beta benutzt hatte, habe ich die Lizenzdatei am selben Ort wie oben erwähnt gespeichert.
Sie können entweder NSUserDefaults oder ein eigenes System verwenden.
Ich habe mich für NSKeyedArchiver entschieden, da die Daten verschlüsselt bleiben, so dass es schwieriger ist, auf sensible Daten wie den Lizenzschlüssel und den aktivierten Status manuell zuzugreifen und diese zu ändern.
Das könnte Sie interessieren http://www.cocoadev.com/index.pl?MAKeyedArchiver – RCIX
Das sieht nützlich aus. Ich werde es versuchen. Ich habe dieses Lernprogramm verwendet, um den Lizenzschlüssel und die Aktivierungsinformationen in eine Datei im Anwendungsdatenordner des Benutzers zu schreiben: http://cocoadevcentral.com/articles/000084.php – Chetan
Ich schlage vor, den Schlüssel abhängig von einer benutzerspezifischen Sache, dh E-Mail oder vollständigen Namen oder vielleicht eine maschinenspezifische ID, wenn nötig. Dann können Sie es in der NSUserDefaults oder eine einfache Punkt namens Datei im Home-Verzeichnis des Benutzers speichern. Dies, ohne es verschlüsseln oder verrückte Verschleierung vornehmen zu müssen. Es wird Piraterie geben, seid euch sicher, ich glaube, das sind Leute, die sowieso nichts bezahlen würden, damit ihr nichts verliert. Indem der Schlüssel von einer benutzerspezifischen Sache abhängig gemacht wird, wird der Benutzer etwas resistenter, um ihn zu teilen.
Über Piraterie. Wie weit glaubst du können sie gehen? Ich machte ein kleines Werkzeug, das gut funktionierte, ohne etwas zu bezahlen. Aber als eine Belohnung für diejenigen, die die Anstrengung bei der Erstellung unterstützen möchten, fügte ich ein kleines Feature hinzu, um die Farbe der Graphen darin für nur $ 5 zu ändern. Nun, was haben sie gemacht? Jemand hat den Schlüssel tatsächlich umgearbeitet und einen Keymaker erstellt. Ich gebe zu, dass ich mich nicht zu sehr darum bemüht habe, den Algorithmus zu verschleiern, aber hey, ich habe mich mehr darauf konzentriert, allen netten Benutzern die Eingabe zu erleichtern, als einem Cracker das Leben schwer zu machen. Ich bin mehr glücklich darüber, dass sie dachten, dass meine kleine App die Mühe wert ist, den Schlüssel für das Reverse Engineering zu entwickeln.
Links:
Apple bietet eine umfassende Einrichtung für diese Art von Anforderung. Was Sie wollen, ist die Keychain API.
+1 das ist die richtige antwort. Alle sensiblen Daten sollten im Schlüsselbund gespeichert werden. Ich würde den Lizenzschlüssel eines Benutzers "sensibel" nennen, denn wenn er ihn verliert, ist er weg. –
Aber ich habe nie gesehen, dass eine Softwareanwendung ihren Lizenzschlüssel im Schlüsselbund speichert. Wenn der Benutzer den Lizenzschlüssel verliert, sollte er ihn in seiner E-Mail gespeichert haben oder er sollte den Kundendienst kontaktieren können. Selbst die Schlüsselbunddaten können verloren gehen, genau wie die Daten im Benutzerordner des Benutzers. – Chetan
- 1. Wie sollte ich den Anmeldestatus des Benutzers an meine Ember.js-Anwendung weitergeben?
- 2. Wie speichern Sie den Namen des angemeldeten Benutzers?
- 3. So speichern Sie Daten in den Anwendungssupport des Benutzers?
- 4. Wie finde ich den Standort des Benutzers?
- 5. Lizenzschlüssel Android
- 6. Wo sollte ich meine Datenmodelle speichern?
- 7. Amazon Alexa: Wörter des Benutzers des Speichers
- 8. Benachrichtigen Sie den Administrator des neuen Benutzers
- 9. Wie gespeicherte Datei im Desktop des Benutzers speichern?
- 10. Spiegelt meine Entwicklungsumgebung die Umgebung des Benutzers wider?
- 11. Den Nutzernamen des Benutzers erhalten - MyBB
- 12. Erhalte den Namen des Benutzers in yii2
- 13. OneLogin ruby client, wie man den Benutzernamen des Benutzers identifiziert
- 14. Wie zeigt man den Standort des Benutzers, wie in Facebook?
- 15. Wie ist es möglich, den Standort des Benutzers sowie meine Markierungen auf der Karte anzuzeigen?
- 16. Speichern von Daten auf dem Telefon des Benutzers
- 17. wie Lizenzschlüssel für Blackberry-Anwendung hinzufügen?
- 18. Standort des Benutzers Android
- 19. Wie bekomme ich den Ordnerpfad des lokalen Benutzers in C#?
- 20. Wie erzwinge ich den Cache/die Cookies des Benutzers?
- 21. Wie kann ich den Netzwerk-Login-Namen des Benutzers erhalten?
- 22. Wie starten Sie den ausgewählten Daydream des Benutzers programmgesteuert?
- 23. Wie bekomme ich den Download-Ordner des Benutzers in Qt?
- 24. Anmelden Benutzername des Benutzers
- 25. Speichern eines Benutzers Zeitzone Präferenz
- 26. Firebase setDisplayName des Benutzers beim Erstellen des Benutzers Android
- 27. Abrufen von SMS-Informationen basierend auf den Kontaktdaten des Benutzers
- 28. Wie erhält man die Geolokalisierung des Benutzers?
- 29. Speichern eines Bildes in den Kontakten des Benutzers mit Cordova Kontakte-Plugin
- 30. Flash - Aufnahme von der Webcam des Benutzers
Das ist genau das, was ich gemacht habe, außer dass ich NSKeyedArchiver verwendet habe, um die Daten anstelle von NSDictionary zu kodieren. Es bietet ein zusätzliches Maß an Sicherheit. Wie für AquaticPrime, siehe hierzu: http://toxicsoftware.com/aquaticprime-warning/ – Chetan
Es sollte darauf hingewiesen werden, dass das, was hier beschrieben wird, ein binärer Riss zu der Software ist. Die Abwehr von Binär-Cracks ist etwas, das noch niemand gelöst hat, da sogar die Verschlüsselung der iPhone-App geknackt wurde. Sie müssen also entscheiden, was Sie erreichen möchten. Ich schlage vor, dass Sie ehrliche Leute ehrlich halten wollen und ein Lizenzschlüsselgenerierungssystem haben, das jemanden davon abhält, ihren eigenen Lizenzgenerator für Ihre App zu machen. AquaticPrime erreicht dies mit ein paar Vorbehalten. Sie sollten den Code kompilieren und den öffentlichen Schlüssel und die Methoden verschleiern. –