Как может производиться идентификация отдельных устройств в мире мобильных приложений?
Пишу бэкенд (api) для мобильного приложения. По условиям часть функционала доступна без регистрации, а часть — с регистрацией через соцсети/е-мейл. Однако информация с «незарегистрированных» устройств должна накапливаться на сервере (статистика, поведение, пользовательские данные для восстановления).
В связи с этим возник вопрос о том, как идентифицировать отдельные устройства. Сам к мобильной разработке отношения не имею, мобильных разработчиков в зоне досягаемости нет. Думал брать нмоер телефона, но его нету у планшетов. Напрягать пользователей регистрацией сходу нельзя.
Какие расово верные варианты на ios/android возможны?
В ios есть возможность организовать уникальный для устройства идентификатор. Любой ios разработчик знает как это сделать. Сделайте одним из принимаемых параметр идентификатор и по нему все накапливайте. А что туда передавать, фронтенд-разработчик разберется.
Нет, UUID генерирует уникальные идентификаторы при каждом вызове, есть несколько алгоритмов которые являются оправной точкой, но все равно каждый раз разный будет. Например есть зависимость от mac адреса, можно гарантировать, что на разных железках будет разный, но не более, есть от timestamp, есть полностью рандомный. Обычно используется в децентрализованных системах для генерации уникальных идентификаторов.
@AxiPod — а у HP у каждого сервера в iLO есть свой UUID, с помощью которого в высокоуровневом п/о данная железка идентифицируется среди таких же десятков в ЦОДе
Можно сделать также как организована сессия в браузере — генерировать уникальный ключ и по нему связывать клиента с сессией. Как написали выше для iOs можно использовать getUUIDBytes, для Android UUID.randomUUID().
One needs to always query the MAC of the same interface, of course. I guess the best bet is with en0. The MAC is always present, even if the interface has no IP/is down.
4. Просто для WEB:
hash на основе timestamp, ip и salt кладется в хранилище браузера (COOKIES и Local Storage (HTML5) ).
Если в одном из хранилищ есть строка — то берется как ID; если нигде нет — то создается как новый ID.