Apps für Android programmieren leicht gemacht!

Nutzeridentifizierung in Android O

Manchmal ist es nötig, dass wir in unserer Programmierung einen Nutzer eindeutig identifizieren können. Das wird dabei nicht genau seinen Namen und Anschrift, seine Handynummer oder E-Mail Adresse abfragen wollen sollte eigentlich zur Normalität gehören.

Welcher Nutzer möchte schon für eine einfache Tetris oder News App seinen Namen angeben? – Niemand. Zusätzlich kommt noch hinzu, dass die Deutschen eh schon etwas empfindlich in Sachen Datenschutz sind.

Wer für online gespeicherte Spielstände oder eine einfache statistische Auswertung dennoch mal einen eindeutigen Code zur Identifizierung von Gerät und/oder Nutzer benötigt hat unter Android ab und an seine Schwierigkeiten.

Eine Geräte Seriennummer ist nicht so einfach auszulesen, eine WLAN-Mac-Adresse ist nur bei eingeschaltetem WLAN verfügbar und eine Handynummer ändert sich auch mal schnell.

Zusätzlich werden für viele Ansätze noch zusätzliche Berechtigungen benötigt, die den Nutzer abschrecken könnten oder die der Nutzer schlichtweg nicht gewährt.

Unter Android O wird Google ein wenig etwas ändern und uns damit einerseits das Leben erschweren und gleichzeitig enorm erleichtern.

IMEI

Unter Android O wird es für uns nun schwieriger die IMEI eines Gerätes zu bekommen. diese Funktion geht nämlich in den Status „Deprecated“ und benötigte schon vorher die zusätzliche Berechtigung (android.os.Build.SERIAL) des Nutzers.
Die Funktion „Build.getSerial()“ wird uns in Zukunft also den Wert „UNKNOWN“ zurückliefen.

Zusätzlich nicht mehr verfügbar werden sein: ro.runtime.firstboot (Bootzeit), htc.camera.sensor.front_SN (Seriennummer der Kamera unter HTC Geräten), persist.service.bdroid.bdaddr (Bluetooth MAC Adresse), Settings.Secure.bluetooth_address (nur noch mit der Berechtigung „LOCAL_MAC_ADDRESS“ verfügbar)

Hostname

Auch der DHCP Hostname (also der Name des Gerätes im Netzwerk) wird in Zukunft nur noch einen leeren String zurückliefen. Dieses Vorgehen wird konform der IETF RFC 7844 (anonymity profile) durchgezogen. Aber auch hier war es vorher schon so, dass dieser Name nur verfügbar war, wenn WLAN aktiviert war.

WLAN-MAC-Adresse

Zusätzlich dazu, dass wir keine WLAN-MAC-Adresse mehr auslesen können wird Android (auf unterstützten WLAN Chips) die MAC Adresse für jeden WLAN Router Scan ändern und nur noch die SSID und DS übergeben. Für uns als Programmierer nicht sonderlich von Interesse, aber vielleicht für Netzwerkadmins.

Android ID

Genug der schlechten Nachrichten. Google rät uns zur Nutzeridentifizierung entweder die Android ID (Settings.Secure.ANDROID_ID) oder die Advertising ID (Benutzerkontensensitiv) zu nutzen. Hier wird eine ID für jeden Nutzer und jede App erstellt. Die Android ID ist ergo für jedes Gerät und jede App unterschiedlich, wird von Android gesetzte/gespeichert und ändert sich in der Regel bei einer Neuinstallation der App nicht, so lange der Package Name und der Key zur Signierung gleich bleiben. Eine Neuinstallierung von Android würde die ID wahrscheinlich ändern.

Widevine ID

Hier gibt Google selber wenig Informationen, doch handelt es sich um eine ID, ähnlich der Android ID/Advertising ID, die für jeden Nutzer/jede App unterschiedlich ist und ab Android O zur Verfügung stehen wird.
Hier werde ich zu gegebener Zeit noch einmal ein paar Informationen bereit stellen.

 

Fazit

Android wird in Sachen Datenschutz etwas sicherer, doch wir als Programmierer sollten versuchen die Widevine ID (ab Android O), die Android ID oder Advertising ID (letztere auch unter Android O verfügbar) zu nutzen und unsere App dem entsprechend anzupassen. Alternativ bleibt nur die Möglichkeit selber eine zufällige ID zu genieren, zu speichern und mit einem Server (zwecks Eindeutigkeit) abzugleichen. Wichtig ist, dass ihr euch an das geltende Datenschutzrecht haltet und gegebenenfalls den Nutzer über eine Identifizierung aufklärt. Im besten Fall sollte man jedoch versuchen erst keine Nutzer eindeutig identifizieren zu wollen und beispielsweise Spielstände bei Google Drive zu speichern, denn dann haben wir als Entwickler nur Zugriff auf diesen Spielstand.

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld