AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Gerät (IOS/Android) zwecks Lizenz identifizieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gerät (IOS/Android) zwecks Lizenz identifizieren

Ein Thema von QuickAndDirty · begonnen am 13. Jun 2016 · letzter Beitrag vom 16. Jun 2016
Antwort Antwort
Seite 3 von 4     123 4      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#21

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 16:21
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.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#22

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 17:04
Vielleicht hilft Dir das ja weiter. Ist zwar zu XE6 Zeit entstanden der Artikel, aber vielleicht klappt er ja jetzt auch noch unter 10.1
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#23

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 17:16
Vielleicht hilft Dir das ja weiter. Ist zwar zu XE6 Zeit entstanden der Artikel, aber vielleicht klappt er ja jetzt auch noch unter 10.1
Da hab ich es her.

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,
    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.
Also in etwa so sollte es aussehen. Ist aber ungetestet.



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...
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (15. Jun 2016 um 17:27 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#24

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 17:59
Vielleicht hilft Dir das ja weiter. Ist zwar zu XE6 Zeit entstanden der Artikel, aber vielleicht klappt er ja jetzt auch noch unter 10.1
Da hab ich es her.
Die Android ID identifiziert seit einigen Jahren nicht mehr das Gerät, sondern das aktive Benutzerprofil.

Das ist hier dokumentiert: https://developer.android.com/refere...tml#ANDROID_ID

Zitat:
When a device has multiple users (available on certain devices running Android 4.2 or higher), each user appears as a completely separate device, so the ANDROID_ID value is unique to each user.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#25

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 20:00
Vielleicht ist es besser statt der IDs und MAC-Adresse lieber nen Hashcode zu nehmen? Da ich den ja auch durchs internet schicke...
Streng genommen solltest du noch nicht mal eindeutige Hashes unverschlüsselt durch das Netzwerk schicken, da das die Verfolgung des Benutzers ermöglicht
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).
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#26

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 22:11
Vielleicht hilft Dir das ja weiter. Ist zwar zu XE6 Zeit entstanden der Artikel, aber vielleicht klappt er ja jetzt auch noch unter 10.1
Da hab ich es her.
Die Android ID identifiziert seit einigen Jahren nicht mehr das Gerät, sondern das aktive Benutzerprofil.

Das ist hier dokumentiert: https://developer.android.com/refere...tml#ANDROID_ID

Zitat:
When a device has multiple users (available on certain devices running Android 4.2 or higher), each user appears as a completely separate device, so the ANDROID_ID value is unique to each user.
Das ist schlecht!
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...
https://developer.android.com/refere...util/UUID.html
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (15. Jun 2016 um 22:55 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#27

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 22:16
Vielleicht ist es besser statt der IDs und MAC-Adresse lieber nen Hashcode zu nehmen? Da ich den ja auch durchs internet schicke...
Streng genommen solltest du noch nicht mal eindeutige Hashes unverschlüsselt durch das Netzwerk schicken, da das die Verfolgung des Benutzers ermöglicht
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).
Also gänzlich im klar text wird sie nicht verschickt. TLS ist es dann leider auch nicht...
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#28

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 22:20
Kommt auf die Delphiversion an. Zwischenzeitlich kann man direkt in der IDE weitere Jars einbinden und Wrapper hierfür erzeugen lassen.
Delphi XE 8
Aber ich wechsle irgendwann dieses Jahr auf die neuste version.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#29

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 15. Jun 2016, 22:49
Das ist schlecht!
Ich muss eine "pro Gerät" Identifizierung haben.
Dann wirst du wohl eine Kombination aus verschieden Hardware-IDs nehmen müssen.

Das hier scheint auch ganz interessant zu sein: Best Practices for Unique Identifiers. Für schlecht fälschbare Geräte-IDs werden IMEI/IMSI empfohlen.
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).
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#30

AW: Gerät (IOS/Android) zwecks Lizenz identifizieren

  Alt 16. Jun 2016, 00:22
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz