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来取代它。