【问题标题】:Unique id in ios [duplicate]ios中的唯一ID [重复]
【发布时间】:2013-12-08 13:11:30
【问题描述】:

我正在开发从 ios5 到 ios7 的应用程序。该应用程序要求所有 iDevice 的唯一 ID。

有一些方法可以得到它

  1. [[UIDevice currentDevice] uniqueIdentifier] 在ios5中折旧

  2. [[UIDevice currentDevice] identifierForVendor] ios5不支持

  3. [NSUUID UUID] ios5不支持

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

  5. IMEI 号码。 我通过google搜索得知,我们无法通过ios获取IMEI号码

那么是否有任何其他选项可以获取 ios 的唯一 ID 提前致谢。

【问题讨论】:

  • 是的,问题是重复的。但那个问题并没有解决我的问题。检查我的问题及其答案。

标签: ios iphone uniqueidentifier


【解决方案1】:

有一个简单的答案:不可能。您可以在此处对标识符进行概述:The Developer’s Guide to Unique Identifiers

【讨论】:

  • 我之前检查过,但我想知道是否有其他方法以及其他人如何克服此类问题
【解决方案2】:

CFUUIDCreateString() 是生成唯一 ID 以在您的应用中使用的推荐方式。

CFUUID 顾名思义,是一个 UUID,它确实有机会相同,但在您的个人情况下,机会是如此之小,以至于它可能永远不会发生。见这里:

http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates

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

我认为地球上的每个人都不会安装您的应用 6 亿次。 :)

为了保留 UUID,您可以将其保存在钥匙串中,该钥匙串仅在设备完全重置时才会在 iOS 上清除(它将在操作系统升级之间保留,但不会在完整的操作系统恢复时保留)。


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

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

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

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

【讨论】:

  • 还有另一个问题,即卸载并重新安装应用程序会创建新 id
  • @pradeep:创建后,您可以将 uuid 保存在钥匙串中(如“可能重复”的答案之一所述)。即使卸载/重新安装,钥匙串条目也会保留。
  • @MartinR 我会检查那个选项。
  • @Jasarien 我的要求是不跟踪用户。但将设备限制为只有一个用户。在注册用户取消注册设备之前,其他人不得使用该设备上的应用程序。
  • 听起来你仍然想要一个用户帐户,然后将生成的设备 UUID 添加到用户的“注册设备”。但我已经说了我能说的。我希望你不打算以这样的限制发布到 App Store,Apple 肯定不会允许应用程序将自己限制为每个用户只能使用一台设备。
【解决方案3】:

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

【讨论】:

  • 第一件事是无法从后端发送唯一 ID(根据客户要求)。第二件事是它有你已经说过的缺点。
  • 客户可能的意思是“没钱买那个”。 :)。但是,是的,缺点仍未解决。我基本上在同一条船上,并试图忍受缺点。
  • 问题是当用户卸载并重新安装它时会生成一个新的id,这不应该发生。(因为为同一用户创建了一个新的实例)
  • 是的,我知道,不幸的是没有办法解决这个问题。我是最接近 UDID 的人。
  • 谢谢。但是其他人是如何克服这个缺点的
猜你喜欢
  • 2016-09-21
  • 2012-06-23
  • 2011-11-09
  • 2012-08-06
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
相关资源
最近更新 更多