Um Benutzereinstellungen zu verwalten, greife ich derzeit den Google-Benutzernamen (effektiv die E-Mail-Adresse, die sie auf dem Gerät registriert haben) und verwenden (ein Hash von), die als "Benutzer-ID" zwischen verschiedenen unterscheiden Benutzer. Etwas in Anlehnung an das, was beschrieben wird here.Android: Benutzer-ID erhalten, ohne scary (für Benutzer) Berechtigungen?
Das funktioniert alles gut, aber einige Benutzer sind (verständlicherweise) durch irgendeine Erlaubnis verängstigt, die der App die böse Macht zu geben scheint, durch ihre Kontoinformationen oder Kontakte zu graben.
EDIT: Dieses Problem ist noch akuter mit der Art und Weise, in der Google Permission Groups im Android 6 runtime permission Schema implementiert hat. Sie haben GET_ACCOUNTS
in die Berechtigungsgruppe CONTACTS
eingegeben. Um nun eine eindeutige anonyme Benutzer-ID zu generieren, muss dem Benutzer ein Dialogfeld mit folgenden Angaben angezeigt werden:
Ermöglicht dieser App den Zugriff auf Ihre Kontakte? | Verweigern | Erlaube |
Wie irreführend ist das ?? Meine App möchte nicht auf Kontakte zugreifen, aber der Benutzer wird aufgefordert, der App den Zugriff auf Kontakte zu gewähren. Ja, es gibt eine Möglichkeit, dem Benutzer mit einem separaten Dialog zu erklären, dass der Zugriff auf Kontakte zwar NICHT erforderlich ist, aber dann immer noch der Börsensystemdialog erscheint, der sie auffordert, Zugriff auf Kontakte zu gewähren ... natürlich sie wird denken "Warum werde ich gebeten, diese Erlaubnis zu erteilen, wenn der Zugang zu Kontakten nicht erforderlich ist?" und "vertraue ich wirklich dem Entwickler? Sie sagen, dass Zugriff auf Kontakte nicht erforderlich ist, aber ist das wirklich wahr?" ... sehr sehr verwirrend und eine sehr schlechte Benutzererfahrung IMHO (und die Meinung von others too).
Ich würde lieber all diese Hektik und Verwirrung vermeiden und eine eindeutige Benutzer-ID ohne spezielle Berechtigungen erhalten.
Gibt es im SDK eine Bestandsfunktion oder -methode, die eine eindeutige Benutzer-ID für den Benutzer zurückgibt, ohne dass zusätzliche Berechtigungen erforderlich sind? Ich bin etwas überrascht, wenn das nicht der Fall ist, denn es scheint ziemlich normal zu sein, eine Benutzer-ID für die Verwaltung von App-Benutzern zu haben.
Zwei Punkte:
(a) Ich brauche nur ein anonymes Benutzer-ID, ... Ich brauche nicht tatsächlich den E-Mail-Adresse des Nutzers, noch würde ich will immer den E-Mail-Adresse des Benutzers. Ich kann also nicht sehen, warum Google keine getUserID()
Methode bereitstellen kann, die eine eindeutige anonymisierte ID zurückgibt, ohne der App spezielle Berechtigungen zu erteilen.
(b) Es muss sich um eine Benutzer-ID und nicht um eine Geräte-ID handeln, damit es auf allen Geräten des Benutzers funktioniert, die für dasselbe Google-Konto registriert sind.
Danke.
vielleicht können Sie gcmid verwenden? –
Die GCM-ID kann sich ändern, wenn der Nutzer die Daten der Google Play Services-App löscht, was beim Lesen im Internet geschieht. Dadurch wird die Aktualisierung der Android-Software beschleunigt oder einige Fehler behoben ... –
Sie können ein einzigartiges Gerät erhalten ID: http://StackOverflow.com/a/17625641/1048340 Natürlich wird dies nicht Benutzer mit mehr als einem Gerät berücksichtigen. Dies könnte eine gute Option sein, um die E-Mail-Adresse ohne Berechtigungen zu erhalten: http://stackoverflow.com/a/19444640/1048340 –