Последствия многопользовательской поддержки Android (впервые в 4.2) для модели данных на стороне сервера (например, android_id)
Google только что выпустил Android 4.2, который включает поддержку нескольких пользовательских профилей на одном устройстве: http://developer.android.com/about/versions/android-4.2.html.
Google говорит, что это будет прозрачно для приложений, но я думаю, что это может повлиять на модель данных, используемую для идентификации устройств, пользователей и установок.
Одной из проблем является использование android_id. Совет на связанной странице выше предлагает идентифицировать устройство одним из методов, отличных от android_id, но я считаю, что android_id очень широко используется для этой цели.
Мой главный вопрос - у каждого профиля пользователя есть свой android_id, и каковы последствия?
Новый android_id генерируется при установке новой ОС или после полной перезагрузки - возможно, будет сгенерирована новая при создании нового профиля пользователя (это вопрос № 1)? Я думаю, что, вероятно, нет, так что тогда приложение может быть установлено несколько раз для одного и того же android_id - я думаю, что это может испортить модель данных на стороне сервера для некоторых приложений.
В любом случае, в зависимости от того, как вы идентифицируете устройство, вы можете обнаружить, что конкретное приложение может иметь несколько установок на одном устройстве.
Другая проблема - пользователи. Предположительно, каждый профиль может иметь любое количество учетных записей Google, но в каждом профиле должен быть связан один аккаунт Google с игровым магазином. Я думаю, что также возможно, что ваше приложение может иметь несколько одновременных установок с одного устройства (по android_id) и одного и того же пользователя. Я думаю, что обычное использование функции нескольких профилей будет для одного пользователя иметь домашний и рабочий профили на своем телефоне - как правило, с использованием разных учетных записей Google, но в некоторых случаях они могут иметь одну и ту же учетную запись Google в каждом профиле (например, так им не нужно платить за вещи дважды).
Примечание
Вот аналогичное обсуждение ANDROID_ID для новой платформы ARC (Android на Chrome). Будьте осторожны - поведение на ARC не такое, как на Android.
2 ответа
(Никто не ответил на мой вопрос, но теперь у меня была возможность самостоятельно протестировать 4.2.)
Ответ в том, что у каждого профиля есть свой android_id.
Если подумать, это, вероятно, имеет больше смысла и вызовет меньше всего проблем. Это должно заставить большинство систем видеть разные профили на устройстве как разные устройства, что не должно быть проблемой. Единственной проблемой будут системы, которые правильно идентифицируют устройство, например. на основе wifi или mac-адреса, или серийного номера или IMEI, а затем ожидал, что несколько android_id на этом одном устройстве представляют собой последовательные установки ОС на этом устройстве. (Скорее извращенно, будет безопаснее ошибаться.)
Да, каждый профиль пользователя имеет свой собственный ANDROID_ID. Теперь это задокументировано здесь:
Примечание. Когда устройство имеет несколько пользователей (доступно на определенных устройствах под управлением Android 4.2 или выше), каждый пользователь отображается как совершенно отдельное устройство, поэтому
ANDROID_ID
Значение уникально для каждого пользователя.
Остерегайтесь, однако, что производители, как известно, испортили их реализацию ANDROID_ID
, Например, Motorola Droid2 вернул тот же ANDROID_ID
значение для каждого устройства. По этой причине, полагаясь на ANDROID_ID
уникальная идентификация пользовательских профилей или устройств может быть ненадежной.