适用于iOS5的应用程序的UUID

Pau*_*len 10 uuid uidevice ios5

可能重复:
UIDevice uniqueIdentifier已弃用 - 现在该怎么办?

正如我所期待的那样,在iOS5 uniqueIdentifierUIDevice不推荐使用in.我正在寻找的iOS5基本相同的功能.

我从文档中了解到,苹果希望我们(开发人员)创建我们自己的UUID(使用CFUUIDCreate我猜)并将其存储在NSUserDefaults.然而,这让我有点颤抖,根本不觉得拯救.在这种情况下,有一个UUID感觉有点无意义.

我需要一个UUID的原因是因为我在auth过程中向我的服务器发送了包含UUID的一堆信息,并希望能够跳过一些步骤,如果服务器可以"猜测"下次启动应用程序时用户是谁或重新安装或其他应用程序实现我的库.CFUUIDCreate似乎没有帮助我.

我也快速浏览了gekitz,但据我了解,它仅基于手机中以太网"卡"的MAC地址.这是不合适的,因为我有一种模糊的感觉,即MAC地址是可变的.将uniqueIdentifierUIDevice

基于各种硬件详细信息的每个设备唯一的字母数字字符串.

Currenly我写了这段代码,它检索一个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"];
Run Code Online (Sandbox Code Playgroud)

总结一下,我的问题如下:
是否有一些可靠的方法来创建一个基于"难以"篡改的设备的UUID,并给我一些依赖和信任的接收器?这不一定要基于设备,可以基于app作为App UUID,只要它重新安装后一样.

Dar*_*ust 7

到目前为止,MAC似乎是唯一已知的识别设备的"稳定"方式.

看看Erica Sadun的UIDevice(Hardware)类别,你会发现识别唯一有用的东西是MAC.

她还有一个UIDevice(IOKit_Extensions)提供IMEI和序列号的类别.但是,IOKit是私有API.埃里卡写道:

正如iPhone传播者Matt Drance在推文中所说,"IOKit在iPhone上并不公开.缺少标题和文档很少是疏忽."

所以使用IOKit可能会让你被拒绝.

据我所知,用户无法在没有越狱设备的情况下更改MAC(然后他可以做任何他想做的事情).所以我的建议是忽略jailbreakers并简单地使用基于MAC的UUID.

警告!MAC地址API在iOS 7中不起作用.