ios中的唯一id

ios中的唯一id,ios,iphone,uniqueidentifier,Ios,Iphone,Uniqueidentifier,我正在开发从ios5到ios7的应用程序目标。应用程序需要在所有iDevices中使用唯一id 有一些方法可以得到它 [[UIDevice currentDevice]唯一标识符] 它在ios5中折旧 [[UIDevice currentDevice]供应商标识] 它在ios5中不可用 [nsuid UUID] 它在ios5中不可用 CFUUIDCreateString(NULL,CFUUIDCreate(NULL)) 它创建一个与所有ios版本兼容的uuid。但不同的设备(或用户)有可能获得相

我正在开发从ios5到ios7的应用程序目标。应用程序需要在所有iDevices中使用唯一id

有一些方法可以得到它

  • [[UIDevice currentDevice]唯一标识符]
    它在ios5中折旧

  • [[UIDevice currentDevice]供应商标识]
    它在ios5中不可用

  • [nsuid UUID]
    它在ios5中不可用

  • CFUUIDCreateString(NULL,CFUUIDCreate(NULL))
    它创建一个与所有ios版本兼容的uuid。但不同的设备(或用户)有可能获得相同的id。(我不希望任何两个应用程序具有相同的id)

  • IMEI号码。 我通过谷歌搜索知道,我们无法通过ios获得IMEI号码

  • 那么,是否有其他选项可以为ios获取唯一id
    提前谢谢。

    有一个简单的答案:这是不可能的。在这里,您可以对标识符进行概述:

    CFUUIDCreateString()
    是生成在应用程序中使用的唯一ID的推荐方法

    顾名思义,CFUUID是一个UUID,它确实有可能是相同的,但在你的个案中,这种可能性是如此之小,以至于它可能永远不会发生。请看这里:

    换句话说,只有在未来100年内每秒生成10亿个UUID后,仅创建一个副本的概率才约为50%。如果地球上每个人都拥有6亿个UUID,那么复制一个UUID的概率约为50%

    我认为你的应用不会被地球上的每个人安装6亿次

    为了持久化UUID,您可以将其保存在密钥链中,该密钥链仅在设备完全重置时在iOS上清除(它将在操作系统升级之间持久化,但不会在操作系统完全恢复时持久化)


    您不应该使用生成的UUID来跟踪用户。如果该用户得到一部新手机并希望继续使用您的应用程序,该怎么办?您如何知道它是新设备上的同一用户

    这就是用户帐户的用途。如果您确实需要跟踪用户而不是设备,那么您需要创建一个用户帐户并将其存储在后端服务中。再多的UUID伪造也无法在设备之间跟踪用户。可能会发生很多事情,导致创建新的UUID:

    • 用户购买新设备
    • 丢失了他们的旧设备
    • 设备损坏
    • 将设备恢复为出厂设置
    • 将设备出售给其他人

    如果您对此的回答是“我们不想为用户创建帐户”,那么您显然不太关心跟踪他们。UUID不识别用户。故事结束。

    如果你的应用程序以某种方式与后端对话,你可以在第一次启动时调用此后端。当应用程序还没有此ID时,让后端返回唯一的编号(例如表中的索引)。 这样,您就可以识别独特的安装。唯一需要注意的是,当用户卸载应用程序时,您的数据库中有一个条目不再处于活动状态。此外,当此用户重新安装此应用程序时,此安装将获得一个新号码。
    我想这是你能做的最好的了。

    我之前检查过,但我想知道是否有其他方法以及其他人是如何克服这类问题的。是的,这个问题是重复的。但这个问题并没有解决我的问题。检查我的问题和答案。第一件事是没有办法从后端发送唯一的id(根据客户端要求)。第二件事是它有你已经说过的缺点。客户的意思可能是“没有钱做那件事”。:)。但是,缺点仍然没有解决。我基本上处于同一条船上,并试图克服这些缺点。问题是,当用户卸载并重新安装它时,将生成一个新的id,这是不应该发生的。(因为为同一用户创建了一个新的isntance)是的,我知道,不幸的是,没有办法解决这个问题。我是最接近UDID的。谢谢。但是其他人是如何克服这个缺点的,还有另一个问题,即卸载和重新安装应用程序会产生新的问题id@pradeep:创建后,您可以将uuid保存在密钥链中(如“可能重复”的一个答案中所述)。即使通过卸载/重新安装,钥匙链条目也会被保留。@MartinR我将选中该选项。@Jasarien我的要求不是跟踪用户。但将设备仅限于一个用户。在注册用户注销该设备之前,其他人不得从该设备使用该应用。在我看来,您仍然需要一个用户帐户,然后将生成的设备UUID添加到用户的“注册设备”中。但我已经尽我所能说了。我希望你不打算在应用商店发布这样的限制,苹果肯定不会允许应用程序将自己限制为每个用户一台设备。