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
 
QuickAndDirty

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

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

  Alt 15. Jun 2016, 16: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
Nobody goes there anymore. It's too crowded!

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


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 18:42 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