Важно отметить разницу между UDID и UUID.
UDID «уникальный идентификатор устройства» зависит от оборудования. Это никогда не меняется для конкретного устройства. По этой причине это стало проблемой конфиденциальности, и Apple блокирует приложения, которые пытаются использовать это. В результате Apple сгенерировала хеш с идентификатором устройства, который можно отключить, особенно для рекламы. Этот новый ID-хеш называется IFA и доступен в iOS 6.0 +.
UUID "универсально уникальный идентификатор" не зависит от аппаратного обеспечения. Это хеш, используемый для идентификации устройства; но не особо абсолютное значение. Например, PhoneGap генерирует UUID на основе свойств устройства; это то, что вы получаете, когда делаете device.uuid. Если вы удалите приложение и переустановите, вы получите новый идентификатор хэша. UUID не блокируется Apple.
Я думаю, что лучшим решением в вашем случае было бы использование IFA с OpenUDID в качестве резервной копии для iOS <6.0. </p>
Вот код, который мы используем. Если IFA недоступен, получите OpenUDID. [[Вы должны установить OpenUDID, подробнее об этом здесь, https://github.com/ylechelle/OpenUDID.]]
NSString* uuid = nil;
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
// IOS 6 new Unique Identifier implementation, IFA
uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} else {
// Before iOS6 (or if IFA disabled) you shoud use a custom implementation for uuid
// Here I use OpenUDID (you have to import it into your project)
// https://github.com/ylechelle/OpenUDID
NSString* openUDID = [OpenUDID value];
uuid = [OpenUDID value];
}