Apple объявила, что в мае 2013 года начнет отклонять приложение, которое использует UDID для отслеживания поведения пользователя
это альтернатива UDID:
Вы можете создать категорию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];