使用Xcode可以发现iOS设备标识符。我需要下载的每个应用都有唯一的标识符。我想在生成随机数字,但他们可能会不止一次生成相同的数字!任何人有想法?为iOS设备创建唯一标识符?
回答
我发现一个非常简单的方法来做到这一点,方法如下:
按COMMAND + ñ并选择Cocoa Touch Class
。
给你的班级命名NSString+UUID
,然后点击下一步。
然后,替换的代码NSString+UUID.h
有:
@interface NSString (UUID)
+ (NSString *)uuid;
@end
而且在NSString+UUID.m
有:
@implementation NSString (UUID)
+ (NSString *)uuid {
NSString *uuidString = nil;
CFUUIDRef uuid = CFUUIDCreate(NULL);
if (uuid) {
uuidString = (NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
}
return [uuidString autorelease];
}
@end
现在,当你需要获得UUID(即:其存储在使用NSUserDefaults的你应用程序负载):
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSString *userIdentifierKey = @"user-identifier"
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:userIdentifierKey] == nil) {
NSString *theUUID = [NSString uuid];
[defaults setObject:theUUID forKey:userIdentifierKey];
[defaults synchronize];
}
// additional application setup...
return YES;
}
在UIDevice类中,苹果已经提供了方法uniqueIdentifier,但现在已经废弃了(对于iOS5),在方法的documentation中,您会发现如何使用uniqueIdentifier。
试试这个
- (NSString *)getDeviceID
{
NSString *uuid = [self gettingString:@"uniqueAppId"];
if(uuid==nil || [uuid isEqualToString:@""])
{
CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID)
{
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
[self savingString:@"uniqueAppId" data:uuid];
[uuid autorelease];
CFRelease(theUUID);
}
}
return uuid;
// this is depreciated
// UIDevice *device = [UIDevice currentDevice];
// return [device uniqueIdentifier];
}
试试这个UIDevice-with-UniqueIdentifier-for-iOS-5,它使用设备的MAC地址作为唯一标识符。
你知道MAC地址是否保持不变Wi-Fi和蜂窝连接,还是在用户从一种网络切换到另一种网络时发生变化? – Crashalot 2012-04-09 06:05:32
iOS6提供了一个新的替换[[[UIDev冰currentDevice] identifierForVendor] UUIDString]
该属性的值是该来自相同的设备上运行的 同一供应商的应用程序是相同的。对于来自不同供应商的同一设备上的应用以及供应商在不同设备上应用的 ,返回不同的值 。
您可以创建UIApplication的,的UIDevice的类别或您prefere像这样(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中的唯一标识符,以便在应用程序需要时重用 - 此标识符r将独特的与应用程序相关的安装不会安装到设备上,但可以用于例如追踪订购了APN服务的设备号码等。
这之后您可以使用它以这样的方式
NSString *uuid = [[UIApplication sharedApplication] getUUID];
使用此:[[UIDevice currentDevice] identifierForVendor]
欲了解更多信息,看看已经上所提供的这个answer
- 1. ios的唯一设备标识
- 2. 在iOS中唯一标识设备
- 3. 在JavaScript中生成唯一标识iOS设备的(非UDID)标识符
- 4. 智能手机设备的唯一设备标识符
- 5. 为组创建唯一标识
- 6. 如何为每个设备生成唯一标识符?
- 7. 为IOS中的所有设备创建唯一的UUID?
- 8. 外围BLE设备的唯一标识
- 9. 唯一标识Android Wear设备
- 10. 如何唯一标识iOS设备上的用户?
- 11. 唯一识别设备
- 12. 在运行时为XElement创建唯一标识符LinqToXml
- 13. 为DOM元素创建唯一标识符
- 14. 唯一标识符
- 15. 如何找到Android设备的唯一标识符?
- 16. 如何为运行时创建的不同组件创建唯一标识符,如R.java为所有cals创建唯一的标识
- 17. 为连接的网络设备获取唯一的标识
- 18. 创建一个全球唯一的Android标识符
- 19. 的[唯一标识符的UIDevice在iOS版成为民营6.0
- 20. 唯一文件标识符
- 21. XHTML唯一标识符
- 22. 唯一标识符策略
- 23. MySQL唯一标识符
- 24. NSManagedObject的唯一标识符
- 25. UITableViewCell唯一标识符?
- 26. SlideMaster的唯一标识符
- 27. PC的唯一标识符
- 28. Mac的唯一标识符?
- 29. 在oracle中创建唯一的数字标识符列sql
- 30. 创建自定义的唯一标识符
各种解决方案,试试这个线程 http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now – 2012-03-11 15:35:21