我想知道是否有可能找到用户iPhone的UDID。有人能解决一下吗?
相反,您必须在iOS 6+中使用新方法identifierForVendor
和advertisingIdentifier
来访问此信息。有关详细信息,请参见此相关文章。
旧的方法(已过时且将导致应用程序被拒绝)
NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];
从iOS 7开始,uniqueIdentifier
属性不再可用。
请参阅UIDevice
参考文档。
正如一些人所说,在iOS5中,此方法已被弃用:
NSString *udid = [[UIDevice currentDevice] uniqueIdentifier];
苹果现在有三个API可以获取设备的 UUID(通用唯一识别码):
替代方案1 (NSUUID类):
NSString *udid = [[NSUUID UUID] UUIDString];
备选方案2(UIDevice类):
NSString *udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
替代方法三(ASIdentifierManager类,需要AdSupport框架):
NSUUID *UUID = [[ASIdentifierManager sharedManager] advertisingIdentifier];
NSString *udid = [UUID UUIDString];
但它们都是字母数字组合,而典型的设备唯一标识符只包含数字。因此这3个API都无用了,而旧的 [[UIDevice currentDevice] uniqueIdentifier] 在iOS6中仍然可用,但会持续多久呢?#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
希望能对你有所帮助!
NSString *uuidString = nil;
CFUUIDRef uuid = CFUUIDCreate(NULL);
if (uuid) {
uuidString = (__bridge NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
}
NSLog(@"UDID: [%@]", uuidString);
CFUUIDCreate
的后续调用将创建不同的ID。 典型模式是:尝试从NSUserDefaults
中加载ID,如果为nil
,则使用上面的代码生成并将其存储在NSUserDefaults
中。 - Giacomo备选方案1(NSUUID类):
NSString *udid = [[NSUUID UUID] UUIDString];
替代方案2(UIDevice类)(适用于iOS 6.0及更高版本):
NSString *udid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
方案一生成一个随机UUID,而方案二提供一个固定UID,不会改变。
http://www.raywenderlich.com/2915/ios-code-signing-under-the-hood/organizerudid
请记住,在IOS 5中,UDID已被弃用。在iOS 7中,当查询MAC地址时,苹果现在总是返回一个固定值,以特别防止使用MAC地址作为ID的方案。因此,您现在应该使用-[UIDevice identifierForVendor]或创建每次安装的UUID。希望对某些人有所帮助。