Последствия поддержки нескольких пользователей Android (новые в версии 4.2) для модели данных на стороне сервера (например, android_id)

Google только что выпустил Android 4.2, который включает поддержку нескольких профилей пользователей на одном устройстве: http://developer.android.com/about/versions/android-4.2.html#MultipleUsers.

Google говорит, что это будет прозрачно для приложений, но я думаю, что это может повлиять на модель данных, используемую для идентификации устройств, пользователей и установок.

Одной из проблем является использование android_id. Совет на связанной странице выше предлагает идентифицировать устройство одним из методов, отличных от android_id, но я считаю, что android_id очень широко используется для этой цели.

Мой главный вопрос: у каждого профиля пользователя есть собственный android_id, и каковы последствия?

Новый файл android_id генерируется при установке новой ОС или при выполнении жесткого reset - возможно, новый будет создан при создании нового профиля пользователя (это вопрос №1)? Я думаю, вероятно, нет, поэтому приложение может быть установлено несколько раз для того же самого android_id. Я думаю, что это может привести к ошибке с серверной моделью данных для некоторых приложений.

В любом случае, в зависимости от того, как вы идентифицируете устройство, теперь вы можете обнаружить, что конкретное приложение может иметь несколько установок на одном устройстве.

Другая проблема - пользователи. Предположительно, каждый профиль может иметь любое количество учетных записей Google, но одна учетная запись Google должна быть связана с магазином воспроизведения в каждом профиле. Я думаю, что также возможно, что ваше приложение может иметь несколько одновременных установок с одним и тем же устройством (by android_id) И одним и тем же пользователем. Я думаю, что для общего использования функции множественных профилей для одного пользователя будет иметь домашние и рабочие профили на своем телефоне - обычно с использованием разных учетных записей Google, но в некоторых случаях они могут иметь одну и ту же учетную запись Google в каждом профиле (например, так им не нужно платить за вещи дважды).

Боковое примечание
Вот аналогичная дискуссия ANDROID_ID на новой платформе ARC (Android в Chrome). Будьте осторожны - поведение в ARC не такое же, как на Android.

Ответы

Ответ 1

(Никто не ответил на мой вопрос, но теперь у меня была возможность проверить себя 4.2.)

Ответ заключается в том, что каждый профиль имеет свой собственный android_id.

Подумайте об этом, это, вероятно, имеет наибольший смысл и вызовет наименьшие проблемы. Это должно привести к тому, что большинство систем будут видеть различные профили устройства на разных устройствах, что не должно быть проблемой. Единственной проблемой могут быть системы, которые правильно идентифицировали устройство, например. на основе MAC-адреса wifi или bt или серийного номера или IMEI, а затем ожидал, что несколько android_id на этом единственном устройстве представляют собой последовательные установки ОС на этом устройстве. (Скорее извращенно, будет более безопасным быть неправильным.)

Ответ 2

Да, у каждого профиля пользователя есть свой ANDROID_ID. Теперь это описано здесь:

Примечание. Если устройство имеет несколько пользователей (доступно на некоторых устройствах под управлением Android 4.2 или выше), каждый пользователь отображается как полностью отдельное устройство, поэтому значение ANDROID_ID уникально для каждого пользователя.

Остерегайтесь того, что производители, как известно, запускают их реализацию ANDROID_ID. Например, Motorola Droid2 вернула одинаковое значение ANDROID_ID для каждого устройства. По этой причине, полагаясь на ANDROID_ID, чтобы однозначно идентифицировать пользовательские профили или устройства может быть ненадежным.