2012-01-19 2 views
2

В моем приложении я хочу создать уникальный идентификатор приложения для каждого пользователя. Я слышал о GUID, который используется для создания уникального идентификатора для пользователей. Как я могу создать этот GUID? Спасибо заранее.iphone: Как создать уникальный идентификатор для идентификации пользователя

ответ

2
[[UIDevice currentDevice] uniqueIdentifier] 

Возвращает уникальный идентификатор вашего iPhone.

Если вам необходимо создать несколько UUID, просто использовать этот метод:

+ (NSString *)GetUUID 
{ 
    CFUUIDRef theUUID = CFUUIDCreate(NULL); 
    CFStringRef string = CFUUIDCreateString(NULL, theUUID); 
    CFRelease(theUUID); 
    return [(NSString *)string autorelease]; 
} 

ПРИМЕЧАНИЕ: A UUID, созданный CFUUIDCreate является уникальным, если пользователь удаляет и повторно устанавливает приложение: вы получите новый каждый каждый раз.

Также UUID осуждается в прошивке 5.

+0

Какой у вас вариант в iOS5 – Developer

+0

вы можете использовать MAC-адрес своего устройства, как упоминал X Slash! – Maulik

1

UUID осуждается в прошивке 5, но вы всегда можете использовать MAC-адрес

How can I programmatically get the MAC address of an iphone

+1

@ X Slash, является ли константа MAC addr по сетевым интерфейсам, когда пользователь переходит взад и вперед от Wi-Fi и сотовых соединений? – Crashalot

+0

MAC-адрес фиксируется для любого заданного сетевого интерфейса. Например, сетевая карта WiFi имеет отдельный MAC-адрес с сотовой сетевой карты. – Stunner

0

Еще одно решения так же, как предложил Maulik ...

Речь идет о создании уникальных имен файлов ... Но это может быть применимо ко всему ... что должно быть уникальным ...

NSString *filePath; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"SomeDirectoryName"]; 

//Create unique filename 
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault); 
CFStringRef newUniqueIdString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueId); 
path = [path stringByAppendingPathComponent:(NSString *)newUniqueIdString]; 
path = [path stringByAppendingPathExtension: @"MOV"]; 
CFRelease(newUniqueId); 
CFRelease(newUniqueIdString); 
0

Это немного не в тему, поскольку вы спрашиваете о пользователях, но вам может понадобиться что-то уникальное устройство (отпечаток пальца). Посмотрите на Keychain Services Reference и три kSecAttrAccessible константы: kSecAttrAccessibleAlwaysThisDeviceOnly, kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly и kSecAttrAccessibleWhenUnlockedThisDeviceOnly.

Константы должны помочь помешать атакам с копией/вставкой, предполагая, что Apple генерирует значение, связанное с устройством, подобное [[UIDevice currentDevice] uniqueIdentifier]. Тем не менее, я никогда не проверял поведение на практике.

Смежные вопросы