UDIDreplace?

我知道[[UIDevice currentDevice] uniqueIdentifier]被拒绝,我用:

 - (NSString *) uniqueDeviceIdentifier{ NSString *macaddress = [[UIDevice currentDevice] macaddress]; NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; NSString *stringToHash = [NSString stringWithFormat:@"%@%@",macaddress,bundleIdentifier]; NSString *uniqueIdentifier = [stringToHash stringFromMD5]; return uniqueIdentifier; } 

如果我的方法没有得到苹果公司的批准,我可以用什么方法获得唯一的标识符?

这个项目和你在做的事情类似: https : //github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5 。 我相信现在已经被苹果公司接受了。 要真正回答你的问题,没有其他(公共)方式获得一个不仅是唯一的,但每个应用程序相同的ID。 @维沙尔的使用方法:

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

和@ JeffWolski的使用方法:

 [[NSUUID UUID] UUIDString]; 

如果你不需要设备ID来保持应用程序之间的一致性,只需要一种方法来识别你自己的特定设备。 如果您需要在应用程序之间运行的设备ID,则需要使用代码或开源项目来使用设备的MAC地址。

UPDATE

我刚刚find另一个解决scheme 您可以使用[[UIDevice currentDevice] identifierForVendor] 。 同样,这个设备ID将是唯一的你的应用程序。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

这是iOS 6中的新function。它提供了一个符合RFC 4122的UUID。

[[NSUUID UUID] UUIDString];

使用这个CFUUIDCreate()来创build一个UUID:

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

而UDID仅在iOS 5中被弃用。

有一件事你可以使用openUDID来取代它。