Hi,
ich habe jetzt eine Lizensierung in meine App gebaut und wollte mal fragen ob Ihr das so gut findet.
Beim Start schaut die App nach ob in den UserDefaults ein Key "LicenseKey" existiert. Dieser Key setzt sich zusammen aus
"Lizenzversion der Software"+"Ablaufdatum der Lizenz"+"MacAddress zu der Lizenz"+"SHA-256 Hash"
Der Hash bildet sich aus dem Lizenzversion, Datum, MacAdresse und einem internen SecretKey.
Ist der Key vorhanden wird einfach nachgesehen ob das Ablaufdatum überschritten ist. Bei einer unbegrenzten Laufzeit wird einfach 0 als Ablaufdatum angegeben und die Versionsnummer überprüft (Ist die Versonsnummer der App höher als die für die der Key erstellt wurde, wird die App auch beendet)
Ist kein Key vorhanden oder der Key in den UserDefaults ist invalid (durch Mainpulationen z.B.) dann wird die MacAddresse und Appversion an meinen Server gesendet. Gibt es keine Verbindung kommt ein entsprechendet Request und die App wird beendet.
Der Server schaut nun in seiner DB ob es schon einen Eintrag zu der MacAddresse gibt.
Wenn nein, dann wird ein neuer Eintrag erzeugt und das Aktuelle Datum + 30 Tage in das Feld licenseend geschrieben und vom Script zurück gegeben. Die App schaut nach ob das zurückgegebe Datum in der Zukunft liegt und erzeugt daraus dann den Lizenzkey nach obigem Motto und schreibt den in die UserDefaults.
Wird ein Eintrag gefunden, dann wird der Eintrag aus dem Feld licenseend und licenseversion zurück gegeben und die App erzeugt daraus den Eintrag in den UserDefaults falls das Datum noch in der Zukunft liegt. Ansonsten gibt es halt wieder einen entsprechenden Requester und die App beendet sich.
Aus diese Art und Weise kann ich sowohl zeitlich begrenzte Lizenzen vergeben als auch zeitlich unbegrenzte, die aber nur für bestimmte Versionen der Software gilt.
Ist das ein gutes Konzept ?
Gruß
Claus
ich habe jetzt eine Lizensierung in meine App gebaut und wollte mal fragen ob Ihr das so gut findet.
Beim Start schaut die App nach ob in den UserDefaults ein Key "LicenseKey" existiert. Dieser Key setzt sich zusammen aus
"Lizenzversion der Software"+"Ablaufdatum der Lizenz"+"MacAddress zu der Lizenz"+"SHA-256 Hash"
Der Hash bildet sich aus dem Lizenzversion, Datum, MacAdresse und einem internen SecretKey.
Ist der Key vorhanden wird einfach nachgesehen ob das Ablaufdatum überschritten ist. Bei einer unbegrenzten Laufzeit wird einfach 0 als Ablaufdatum angegeben und die Versionsnummer überprüft (Ist die Versonsnummer der App höher als die für die der Key erstellt wurde, wird die App auch beendet)
Ist kein Key vorhanden oder der Key in den UserDefaults ist invalid (durch Mainpulationen z.B.) dann wird die MacAddresse und Appversion an meinen Server gesendet. Gibt es keine Verbindung kommt ein entsprechendet Request und die App wird beendet.
Der Server schaut nun in seiner DB ob es schon einen Eintrag zu der MacAddresse gibt.
Wenn nein, dann wird ein neuer Eintrag erzeugt und das Aktuelle Datum + 30 Tage in das Feld licenseend geschrieben und vom Script zurück gegeben. Die App schaut nach ob das zurückgegebe Datum in der Zukunft liegt und erzeugt daraus dann den Lizenzkey nach obigem Motto und schreibt den in die UserDefaults.
Wird ein Eintrag gefunden, dann wird der Eintrag aus dem Feld licenseend und licenseversion zurück gegeben und die App erzeugt daraus den Eintrag in den UserDefaults falls das Datum noch in der Zukunft liegt. Ansonsten gibt es halt wieder einen entsprechenden Requester und die App beendet sich.
Aus diese Art und Weise kann ich sowohl zeitlich begrenzte Lizenzen vergeben als auch zeitlich unbegrenzte, die aber nur für bestimmte Versionen der Software gilt.
Ist das ein gutes Konzept ?
Gruß
Claus
2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen
