Вы можете создать категорию UIApplication, UIDevice или, как вы предпочитаете, как это (пример ARC)
@interface UIApplication (utilities)
- (NSString*)getUUID;
@end
@implementation UIApplication (utilities)
- (NSString*)getUUID {
NSUserDefaults *standardUserDefault = [NSUserDefaults standardUserDefaults];
static NSString *uuid = nil;
// try to get the NSUserDefault identifier if exist
if (uuid == nil) {
uuid = [standardUserDefault objectForKey:@"UniversalUniqueIdentifier"];
}
// if there is not NSUserDefault identifier generate one and store it
if (uuid == nil) {
uuid = UUID ();
[standardUserDefault setObject:uuid forKey:@"UniversalUniqueIdentifier"];
[standardUserDefault synchronize];
}
return uuid;
}
@end
UUID () - это функция
NSString* UUID () {
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
return (__bridge NSString *)uuidStringRef;
}
это генерирует уникальный идентификатор, сохраняемый в NSUserDefault для повторного использования всякий раз, когда приложению это необходимо - этот идентификатор будет уникальным, связанным с установкой приложения, а не с устройством, но его можно использовать, например, для отслеживания количества устройств, подписанных на Сервис APN и т.д ...
После этого вы можете использовать его следующим образом:
NSString *uuid = [[UIApplication sharedApplication] getUUID];