Wie kann eine eindeutige ID zur Identifizierung von Android-Geräten abgerufen werden?

Einige Entwickler können eine eindeutige ID zur Identifizierung von Android-Geräten benötigen. Die Anwendungsfälle, in denen Entwickler diese Unique ID benötigen, sind vielfältig.

Zum Beispiel, wenn Sie :

  • einen Android-Benutzer identifizieren möchten, um Spielstände auf einem Server zu speichern
  • die Installation von Apps zu verfolgen
  • DRM für den Kopierschutz zu erzeugen.

Es gibt verschiedene Lösungen, aber keine ist perfekt. In diesem Tutorium werden wir fünf Lösungen untersuchen und ihre Nachteile vorstellen:

1. Eindeutige Telefonnummer (IMEI, MEID, ESN, IMSI)

Wenn Sie nur auf Smartphones abzielen, können Sie von der Tatsache profitieren, dass das Gerät über Telefondienste verfügt, so dass Sie leicht eine eindeutige ID abrufen können, die das Gerät identifiziert.

Diese eindeutige ID kann IMEI, MEID, ESN oder IMSI sein. Sie können wie folgt definiert werden:

  • IMEI für International Mobile Equipment Identity : die eindeutige Nummer zur Identifizierung von GSM-, WCDMA-Mobiltelefonen sowie einigen Satellitentelefonen
  • MEID für Mobile Equipment IDentifier : die weltweit eindeutige Nummer zur Identifizierung eines physischen Geräts einer CDMA-Mobilstation, die MEID wurde geschaffen, um ESNs (Electronic Serial Number)
  • ESN für Electronic Serial Number : die eindeutige Nummer zur Identifizierung von CDMA-Mobiltelefonen
  • IMSI (International Mobile Subscriber Identity): die eindeutige Identifizierung, die mit allen GSM- und UMTS-Netz-Mobiltelefonbenutzern verbunden ist

Um die eindeutige ID Ihres Geräts abzurufen, können Sie den folgenden Code verwenden:

Diese Lösung muss android.permission.READ_PHONE_STATE für den Benutzer anfordern, was bei der Art der Anwendung, die Sie erstellt haben, schwer zu rechtfertigen sein kann.

Außerdem ist diese Lösung auf Smartphones beschränkt, da Tablets nicht über Telefondienste verfügen. Ein Vorteil ist, dass der Wert auch bei Werksresets der Geräte erhalten bleibt.

2. MAC-Adresse

Sie können auch versuchen, eine MAC-Adresse von einem Gerät mit Wi-Fi- oder Bluetooth-Hardware zu erhalten. Diese Lösung wird jedoch nicht empfohlen, da nicht alle Geräte über eine Wi-Fi-Verbindung verfügen. Selbst wenn der Benutzer über eine Wi-Fi-Verbindung verfügt, muss diese eingeschaltet sein, um die Daten abzurufen. Andernfalls meldet der Anruf die MAC-Adresse nicht.

3. Seriennummer

Geräte ohne Telefondienste wie Tablets müssen eine eindeutige Geräte-ID melden, die seit Android 2.3 Gingerbread über android.os.Build.SERIAL verfügbar ist. Einige Telefone mit Telefondiensten können auch eine Seriennummer definieren. Da nicht alle Android-Geräte eine Seriennummer haben, ist diese Lösung nicht zuverlässig.

4. Sichere Android-ID

Beim ersten Start eines Geräts wird ein Zufallswert generiert und gespeichert. Dieser Wert ist über Settings.Secure.ANDROID_ID verfügbar. Es handelt sich um eine 64-Bit-Zahl, die während der gesamten Lebensdauer eines Geräts konstant bleiben sollte. ANDROID_ID scheint eine gute Wahl für einen eindeutigen Gerätebezeichner zu sein, da er für Smartphones und Tablets verfügbar ist. Um den Wert abzurufen, können Sie den folgenden Code verwenden:

String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);

Der Wert kann sich jedoch ändern, wenn das Gerät auf die Werkseinstellungen zurückgesetzt wird. Es gibt auch einen bekannten Fehler bei einem beliebten Mobiltelefon eines Herstellers, bei dem jede Instanz die gleiche ANDROID_ID hat. Es ist klar, dass die Lösung nicht 100% zuverlässig ist.

5. UUID verwenden

Da die meisten Anwendungen eine bestimmte Installation und nicht ein physisches Gerät identifizieren müssen, ist die Verwendung der UUID-Klasse eine gute Lösung, um eine eindeutige ID für einen Benutzer zu erhalten. Die folgende Lösung wurde von Reto Meier von Google in einer Google I/O-Präsentation vorgestellt:

Die Methode UUID.randomUUID() erzeugt eine eindeutige Kennung für eine bestimmte Installation. Man muss diesen Wert nur speichern und der Benutzer wird beim nächsten Start der Anwendung identifiziert. Sie können auch versuchen, diese Lösung mit dem Android-Backup-Dienst zu verknüpfen, um die Informationen für den Benutzer verfügbar zu halten, selbst wenn er Ihre Anwendung auf einem anderen Gerät installiert.

Fazit

Ein bestimmtes Gerät auf Android zu identifizieren ist keine einfache Sache. Es gibt viele gute Gründe, das zu vermeiden. Die beste Lösung ist wahrscheinlich, eine bestimmte Installation mit einer UUID-Lösung zu identifizieren. Wenn Sie jedoch ein bestimmtes Gerät unbedingt physisch identifizieren wollen, können Sie versuchen, die ANDROID_ID-Lösung zu verwenden. Sie ist nicht 100% zuverlässig, aber besser als andere Lösungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.