Идентификаторы мобильных устройств Apple уникальны у разных поставщиков?

#iphone #ios #ipod-touch #udid

#iPhone #iOS #ipod-touch #udid

Вопрос:

Являются ли уникальные идентификаторы устройств (UDID) мобильных устройств Apple (iPhone, iPod touch и так далее) глобально уникальными даже у разных поставщиков? Или возможно, что у какого-то телефона HTC такой же идентификатор?

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

Ответ №1:

UDID — это особенность Apple… таким образом, вы не найдете его на телефоне HTC.

Вы можете вычислить это с помощью Python. Я не знаю, где я взял исходный код, но вот он

 import hashlib
serial=""           #go to your iphones Settings - General -About
imei=""             #go to your iphones Settings - General -About
wifi_mac=""         #go to your iphones Settings - General -About - Wifi Mac
blue_mac=""         #go to your iphones Settings - General -About - Bluetooth Mac

udid=hashlib.sha1(serial.upper() imei wifi_mac blue_mac).hexdigest()
print udid
  

Если вам нужно что-то уникальное, я бы посоветовал вам сгенерировать и сохранить uuid на устройстве при первом запуске, если этого для вас достаточно. (Это изменится, если кто-то удалит и переустановит приложение, но не будет двух устройств с одинаковым идентификатором)

Ответ №2:

Возможно, вы могли бы связать UDID с устройством MAC, первые 24 бита которого зависят от поставщика. Потенциально можно подделать MAC на взломанном iPhone или рутированном устройстве Android, но это может помочь снизить вероятность дубликатов.