如何在iPhone上生成一个好的、不变的UDID

如何在iPhone上生成一个好的、不变的UDID,iphone,ios5,privacy,Iphone,Ios5,Privacy,在iOS 5中,[[UIDevice currentDevice]uniqueIdentifier]的使用已被弃用。我们现在被鼓励使用自己生成的UUID,并将它们存储在应用程序的NSDEFAULT中。我想大多数情况下都可以 但我的问题是——现在是否有可能生成类似于设备ID的UUID——我希望即使在删除并重新安装应用程序后也能保持不变。这样做的目的是帮助跟踪可能从iPhone上进行的欺诈尝试 我想知道MAC地址的使用是否和这个类别一样:可以吗 文档中有关uniqueIdentifier属性的讨论指

在iOS 5中,
[[UIDevice currentDevice]uniqueIdentifier]
的使用已被弃用。我们现在被鼓励使用自己生成的UUID,并将它们存储在应用程序的NSDEFAULT中。我想大多数情况下都可以

但我的问题是——现在是否有可能生成类似于设备ID的UUID——我希望即使在删除并重新安装应用程序后也能保持不变。这样做的目的是帮助跟踪可能从iPhone上进行的欺诈尝试


我想知道MAC地址的使用是否和这个类别一样:可以吗

文档中有关uniqueIdentifier属性的讨论指出:

不要使用uniqueIdentifier属性。创建一个独特的 特定于应用程序的标识符,您可以调用CFUUIDCreate 函数创建UUID,并使用 NSUserDefaults类

将其写入用户默认值应确保在删除/重新安装应用程序时保留它

编辑:


显然,对不起。描述了如何生成UUID,但我无法确定它对于给定的用户/设备是否为常量。我见过一些人提议通过应用程序删除/重新安装来使用UUID进行持久化,但不知道这有多值得推荐(我想,在任何情况下,用户都可以删除这些条目)。

使用Apple描述的方法(jbat指出的方法)创建自己的UUID,并将其存储在NSUserDefaults中


然后,使用iCloud,您可以使用键值存储帮助在安装和不同设备之间将此UUID“持久化”到特定用户。

自1970年到当前日期的秒数应为唯一的秒数。如果用户没有玩iPhone Time;)但它不绑定到特定的设备。。。我需要它是不变的。Unix时间对于唯一ID来说是一个糟糕的选择,因为它根本不是唯一的。对于大多数应用程序来说,这可能在大多数情况下都是足够的,但只要2个用户第一次同时启动应用程序,系统就会失败。它也不能在删除和重新安装之间持久化,所以根本不适合。我在想,但问题是用户可以禁用iCloud及其存储,这可以在每个应用程序中完成,对吗?据我所知,你不能在每个应用程序中禁用iCloud,但你可以禁用“文档和数据”iCloud同步,这反过来会导致应用程序无法备份。