可能是重复问题:
UIDevice uniqueIdentifier过时了,现在该怎么办?
正如您所知道的,UIDevice
中的uniqueIdentifier
在iOS5中已经被弃用。我正在寻找一个在iOS5上基本具有相同功能的替代方法。
从文档中我所理解的是苹果希望我们(开发者)使用CFUUIDCreate
来创建自己的UUID,并将其存储在NSUserDefaults
中。然而,这让我感到有些不安全,并且完全没有意义。在这种情况下拥有一个UUID感觉毫无意义。
我需要UUID的原因是,在认证过程中,我会将包括UUID在内的一些信息发送到我的服务器,并希望能够跳过一些步骤,如果服务器“猜测”出下次启动或重新安装应用程序时用户是谁,或者其他应用程序实现了我的库。然而,CFUUIDCreate
似乎无法帮助我解决这个问题。
我也简要地查看了gekitz,但据我所理解,它仅基于手机中以太网“卡”的MAC地址。这并不合适,因为我有一种模糊的感觉,即MAC地址是可以更改的。UIDevice
中的uniqueIdentifier
一个基于各种硬件细节的设备唯一的包含字母数字的字符串。
目前,我写了这段代码来检索UUID。但是,只要我在XCode中清除并重新安装应用程序,我就会获得一个新的UUID。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *UUID = @"";
if (![defaults valueForKey:@"UUID"])
{
CFUUIDRef UUIDRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDSRef = CFUUIDCreateString(kCFAllocatorDefault, UUIDRef);
UUID = [NSString stringWithFormat:@"%@", UUIDSRef];
[defaults setObject:UUID forKey:@"UUID"];
}
else {
UUID = [defaults valueForKey:@"UUID"];
}
[deviceInformation setObject:UUID forKey:@"UUID"];
总之,我的问题是:是否有一种可靠的方式创建一个UUID,该UUID基于设备,难以被篡改,并且让我作为接收者有一些依赖和信任?这个UUID不必基于设备,可以基于应用程序作为应用程序UUID,只要在重新安装后保持相同即可。
CFUUIDCreate
生成的UUID,存储在NSUserDefaults
中,不能满足您的身份验证需求?每次安装后都会发送相同的值(直到被删除并重新安装)。这在开发过程中可能很烦人,但用户并不经常删除他的应用程序,对吧? - DarkDust