Чтобы управлять пользовательскими настройками, в настоящее время я захватываю имя пользователя google (фактически адрес электронной почты, который они зарегистрировали на устройстве), и используя (хэш), который как "идентификатор пользователя", чтобы различать разные пользователи. Что-то вроде того, что описано здесь.
Все работает отлично, но некоторые пользователи (по понятным причинам) испуганы с помощью любого разрешения, которое, похоже, придает приложению некоторую злую силу, чтобы тралить через свою учетную информацию или контакты.
EDIT: эта проблема еще более острая, когда Google теперь реализовал Группы разрешений в Android 6 сценарий времени выполнения. Они поместили GET_ACCOUNTS
в группу разрешений CONTACTS
. Итак, теперь, чтобы создать уникальный анонимный идентификатор пользователя, пользователю необходимо предоставить диалог, в котором говорится:
Разрешить этому приложению доступ к вашим контактам? | Запретить | Разрешить |
Как обманчиво это? Мое приложение не хочет получать доступ к контактам, но пользователю предлагается предоставить разрешение на доступ к контактам для этого приложения! Да, есть возможность объяснить пользователю отдельный диалог, что на самом деле доступ к контактам НЕ требуется, но затем они все равно получают диалог системы запаса, который просит их предоставить разрешение на доступ к контактам... естественно, они подумает: "Почему меня просят предоставить это разрешение, если доступ к контактам не требуется?" и "действительно ли я доверяю разработчику?" Говорят, что доступ к контактам не требуется, но это правда? "... очень запутанный и очень плохой пользовательский опыт ИМХО (и мнение другие тоже).
Я предпочел бы просто избежать всех этих хлопот и путаницы и получить уникальный идентификатор пользователя без особых разрешений.
Итак, есть ли в SDK функция или метод запаса, который будет возвращать уникальный пользовательский идентификатор для пользователя без каких-либо дополнительных разрешений? Я немного удивлен, если этого не происходит, потому что, по-видимому, это довольно обычная вещь, чтобы хотеть... иметь идентификатор пользователя для управления пользователями приложений.
Две точки:
(a) Мне нужен только анонимный идентификатор пользователя... На самом деле мне не нужен адрес электронной почты пользователя, и я бы не хотел, чтобы пользовательский адрес электронной почты. Поэтому я не понимаю, почему Google не может предоставить метод getUserID()
, который возвращает уникальный анонимный идентификатор, не предоставляя специальные разрешения для приложения.
(b) Он должен быть идентификатором пользователя, а не идентификатором устройства, чтобы он работал на всех пользовательских устройствах, зарегистрированных в одной учетной записи google.
Спасибо.