![]() |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
OK hier ein code schnipsel für die WLAN Mac adresse für alle die es brauchen.
Delphi-Quellcode:
unit uDeviceID;
interface Uses FMX.platform, {$IFDEF ANDROID} fmx.helpers.android, androidapi.JNI.GraphicsContentViewText, androidapi.jni.JavaTypes, androidapi.helpers,androidapi.jni.App, androidapi.jni.Net, androidapi.JNIBridge, {$ENDIF} classes, Types, FMX.types, system.Messaging; type TDeviceIdentifier = class(TComponent) private {$IFDEF ANDROID} WifiManagerObj: JObject; WifiManager: JWifiManager; WifiInfo: JWifiInfo; {$ENDIF} FWifiMacAdresse:String; public Constructor Create(aOwner:TComponent); end; implementation { TDeviceIdentifier } constructor TDeviceIdentifier.Create(aOwner: TComponent); begin inherited; {$IFDEF ANDROID} WifiManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE); WifiManager := TJWifiManager.Wrap((WifiManagerObj as ILocalObject).GetObjectID); WifiInfo := WifiManager.getConnectionInfo(); FWifiMacAdresse := JStringToString(WifiInfo.getMacAddress); {$ENDIF} end; end. |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Vielleicht
![]() |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
Delphi-Quellcode:
Also in etwa so sollte es aussehen. Ist aber ungetestet.
unit uDeviceID;
interface Uses FMX.platform, {$IFDEF ANDROID} fmx.helpers.android, androidapi.JNI.GraphicsContentViewText, androidapi.jni.JavaTypes, androidapi.helpers,androidapi.jni.App, androidapi.jni.Net, androidapi.JNIBridge, androidapi.JNI.Provider, {$ENDIF} {$IFDEF IOS} Macapi.Helpers, iOSapi.UIKit, {$ENDIF} classes, Types, FMX.types, system.Messaging, FMX.Dialogs, FMX.Forms; type TDeviceIdentifier = class(TComponent) private {$IFDEF ANDROID} WifiManagerObj: JObject; WifiManager: JWifiManager; WifiInfo: JWifiInfo; {$ENDIF} {$IFDEF IOS} fUIDevice : UIDevice; {$ENDIF} FWifiMacAdresse:String; fDeviceID:String; function GetID: String; public Constructor Create(aOwner:TComponent); property ID:String read GetID; end; implementation { TDeviceIdentifier } constructor TDeviceIdentifier.Create(aOwner: TComponent); begin inherited; {$IFDEF ANDROID} WifiManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.WIFI_SERVICE); WifiManager := TJWifiManager.Wrap((WifiManagerObj as ILocalObject).GetObjectID); WifiInfo := WifiManager.getConnectionInfo(); FWifiMacAdresse := JStringToString(WifiInfo.getMacAddress); fDeviceID := JStringToString(TJSettings_SECURE.JavaClass.getString(SharedActivity.getContentResolver, TJSettings_SECURE.JavaClass.ANDROID_ID)); {$ENDIF} {$IFDEF IOS} fUIDevice := TUIDevice.Wrap(TUIDevice.OCClass.currentDevice); fDeviceID := NSStrToStr(fUIDevice.identifierForVendor.UUIDString); {$ENDIF} end; function TDeviceIdentifier.GetID: String; begin Result := fDeviceID+FWifiMacAdresse; if result = '' then Begin Showmessage('Dieses Gerät wird nicht von der App unterstützt!'); Application.terminate; End; end; end. Schöner wäre wenn jemand sowas unter Verwendung einer generierten ID im IOS Keychain Service und im Android Keystore Service präsentieren könnte. Vielleicht ist es besser statt der IDs und MAC-Adresse lieber nen Hashcode zu nehmen? Da ich den ja auch durchs internet schicke... |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
Das ist hier dokumentiert: ![]() Zitat:
|
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
Also ja, Hashen ist schon besser. Das hat auch den Vorteil, dass du auf Serverseite keine Gedanken darüber machen musst, wie deine ID aufgebaut ist (z.B. Länge). |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
Ich muss eine "pro Gerät" Identifizierung haben. Hat jeder Benutzer auf dem Gerät eigene installationen oder Benutzen alle Benutzer gemeinsam die installierten Apps? Sprich ist der APP spezifische bereich um Einstellungen zu speichern pro APP oder pro user? Tendiere immer mehr dazu eine UUID zuspeichern... ![]() |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
|
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
Aber ich wechsle irgendwann dieses Jahr auf die neuste version. |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Zitat:
Das hier scheint auch ganz interessant zu sein: ![]() Wenn du die Anforderung mit der Geräte-ID unbedingt erfüllen musst, sollte das schon gehen ... für die meisten Fälle sind andere IDs angemessener (Datenschutz). |
AW: Gerät (IOS/Android) zwecks Lizenz identifizieren
Wo ist das Problem eine (völlig losgelöste) ID beim ersten Start der Anwendung zu erzeugen?
Dann wird eine Verbindung zum Lizenzserver aufgebaut und es wird eine Lizenz mit dieser Geräte-ID und den Account-Informationen abgerufen. Sind keine Lizenzen mehr verfügbar, dann kann der Kunde einfach Lizenzen freigeben (am dem Gerät selber oder ohne das Gerät - weil zerstört oder nicht mehr da). Zur Überprüfung schaut die Anwendung ab und an beim Lizenzserver vorbei und prüft, ob die Geräte-ID noch mit einer Lizenz verknüpft ist. Diese Info (Geräte-ID xy ist jetzt ungültig) könnte man auch per Push-Notification übertragen und sobald das Gerät eine Verbindung hat wird die Lizenz von dort entfernt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz