UDID更换?

时间:2013-04-11 02:42:02

标签: iphone ios

我知道[[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;
}

如果我的方法未经Apple批准,我可以使用哪种方法获取唯一标识符?

4 个答案:

答案 0 :(得分:5)

这个项目与你正在做的事情类似:https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5。我相信苹果现在正在接受它。要真正回答您的问题,没有其他(公共)方式获取不仅是唯一的ID,而且每个应用程序都相同。 @ Vishal的使用方法:

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

和@ JeffWolski的使用方法:

[[NSUUID UUID] UUIDString];

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

<强>更新

我刚刚找到另一种解决方案。您可以使用[[UIDevice currentDevice] identifierForVendor]。同样,此设备ID对您的应用来说也是唯一的。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/occ/instp/UIDevice/identifierForVendor

答案 1 :(得分:3)

这是iOS 6中的新功能。它为您提供符合RFC 4122的UUID。

[[NSUUID UUID] UUIDString];

答案 2 :(得分:3)

使用此CFUUIDCreate()创建UUID:

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

UDID仅在iOS 5中弃用。

答案 3 :(得分:3)

您可以使用openUDID替换它。