#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, но это может помочь снизить вероятность дубликатов.