2

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

4 回答 4

5

这个项目做的事情类似于你正在做的事情:https ://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5 。我相信它现在正在被Apple接受。要真正回答您的问题,没有其他(公共)方法可以获取不仅唯一而且对于每个应用程序都相同的 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

于 2013-04-11T05:13:30.987 回答
3

使用此 CFUUIDCreate() 创建 UUID:

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

UDID 仅在 iOS 5 中被弃用。

于 2013-04-11T02:53:47.290 回答
3

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

[[NSUUID UUID] UUIDString];

于 2013-04-11T02:45:25.107 回答
3

您可以做的一件事是使用openUDID来替换它。

于 2013-04-11T03:00:51.287 回答