Как узнать UDID для ios9

Начиная с iOS 7 невозможно получить UDID непосредственно на устройстве Apple iOS.

Я знаю, что Apple предлагает использовать UIDevice.currentDevice().identifierForVendor?.UUIDString. но он меняется каждый раз после удаления приложения.

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

напр. если у пользователя два устройства

в базе данных моего сервера я храню это так

ID пользователя->>> [email protected]

GCMID->>> {UDIDForDevice1:GCMTokenForDevice1,UDIDForDevice2:GCMTOkenForDevice2}


person Parth Bhuva    schedule 02.05.2016    source источник
comment
UDID поставщика не обязательно меняется после удаления приложения. Зачем вам нужен UDID и почему у вас не работает идентификатор производителя?   -  person nhgrif    schedule 02.05.2016
comment
я хочу отправить GCM пользователям, и на каждого пользователя приходится от двух до трех устройств ios. поэтому для уникальной идентификации устройств мне нужен UDID.   -  person Parth Bhuva    schedule 02.05.2016
comment
Итак, ваш актуальный вопрос заключается в том, как идентифицировать уникальные устройства для одного пользователя? Потому что vendorSpecificId делает это.   -  person nhgrif    schedule 02.05.2016
comment
у вас есть идеи на этот счет? @nhgrif   -  person Parth Bhuva    schedule 02.05.2016
comment
@nhgrif Я думаю, ты имеешь в виду UIDevice.identifierForVendor   -  person kennytm    schedule 02.05.2016
comment
UIDevice.currentDevice().identifierForVendor?.UUIDString меняется каждый раз, когда я переустанавливаю приложение. поэтому я не могу его использовать   -  person Parth Bhuva    schedule 02.05.2016
comment
Вам нужно обновить свой вопрос и уточнить, что именно вам нужно, а не просить людей размышлять о том, как работает что-то еще.   -  person nhgrif    schedule 02.05.2016
comment
@nhgrif я обновил вопрос.   -  person Parth Bhuva    schedule 02.05.2016


Ответы (1)


Если вы хотите действительно однозначно идентифицировать устройство, сохраните UUID в связке ключей. См. Как сохранить идентификаторForVendor в ios после удалить приложение iOS на устройстве?.

Для GCM вам, вероятно, следует использовать Instance ID API вместо того, чтобы изобретать собственный формат идентификации.


Для исходного вопроса сайт www.easy-udid.com использует Доставка и настройка профиля по беспроводной сети для получения UDID и другой информации об устройстве.

Кнопка «Получить мой UDID» ссылается на файл qilin.en.mobileconfig, который представляет собой Профиль конфигурации plist-файл со следующим содержимым:

{
  "PayloadType":"Profile Service",
  "PayloadContent":{
    "DeviceAttributes":[
      "UDID",
      "VERSION",
      "PRODUCT",
      "SERIAL"
    ],
    "URL":"http://www.easy-udid.com/retrieve.php"
  },
  ...
}

Когда пользователь устанавливает профиль, телефон отправляет UDID, версию, продукт и серийный номер при открытии предоставленного URL-адреса (http://www.easy-udid.com/retrieve.php). Затем сервер может отобразить результат пользователю.

См. https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/ConfigurationProfileExamples/ConfigurationProfileExamples.html для некоторых примеров ответов.

person kennytm    schedule 02.05.2016
comment
(Но я сомневаюсь, зачем вам нужен постоянный идентификатор для обмена облачными сообщениями)......... потому что я храню токен GCM на своем сервере в базе данных в форме значения ключа {deviceID: GCMToken} - person Parth Bhuva; 02.05.2016
comment
пожалуйста, предпочитайте рассматриваемый пример - person Parth Bhuva; 02.05.2016
comment
@Parth Кажется, вы все равно должны использовать идентификатор экземпляра. Пожалуйста, проверьте обновление. - person kennytm; 02.05.2016