6

感谢您花时间和兴趣阅读本文并希望能帮助我。

我需要一个唯一的 IOS 用户标识符,我所说的唯一用户标识符是 Apple 提供的唯一字符串,它对用户而非设备是唯一的,这意味着它将在不同设备之间保持相同。我考虑过 Apple ID 或类似的东西,但这是不可能的,因为 Apple 不提供它(至少我不知道),但我想要类似的东西。

它不能是 UDID,因为(除了被弃用)它不是跨设备持久的。我希望这样做是为了验证用户身份,而无需用户登录或注册。可以这样做,因为某些应用程序会这样做。我没有登录或使用其他设备进行任何操作,但它对我进行了身份验证。我原以为是 Apple ID,但这是不可能的。

我检查了这个答案:iOS unique user identifier。似乎它可能是解决方案,但我不太明白,因为我看不出它对每个新用户来说都是独一无二的(能够区分多个用户和同一个用户,但是不同的设备)。

我非常感谢阅读本文并试图提供帮助的人们。谢谢

PD:我使用 Titanium 的 Appcelerator,而不是 Apple 的 IOS SDK 或类似的东西。但这并不重要,我只想让流程能够使用 Titanium 的 Appcelerator 来完成

PS:注意:

谢谢你的回答,这么快!我已经读了很多遍了,我就是不明白。你们能帮我更好地理解它吗?

我理解的方式是这样的。

1.-使用默认服务创建一个 UUID(每次安装都会更改) 2.-将其存储到钥匙串(据我所知,钥匙串上保存的值是设备本地的)(我想我会把它放在应用程序的 id-com.bla.bla-),也是一个默认帐户,我认为我会将其保留为“用户”。

这都是本地的,所以每次安装都会这样做,每次安装都有不同的 UUID(不是每个用户都必须) 3.-将 UUID 保存到 NSUserDefaults。4.-将 UUID 保存到云端的公共数据存储中。(云端数据存储中的 UUID、Keychain 和 NSUserDefaults 应该相同)

因此,如果运行 5 次安装,云的公共数据存储应该是这样的

An Array of 5 values:
[
XXXX-EEEEE-FFFFF,
SFSDFFWE-WERW-SDFS,
XXXX-XXXXX-XXXXX,
ZZZZZ-ZZZZ-ZZZZX,
XZXZZX-ZXZXZXS-ADADS
]

5.-每次运行应用程序时都会执行所有这些,首先检查公共云存储中是否存储了值。这是我感到困惑的地方,不同的设备如何知道您的 UUID?我的意思是,有 5 种不同的 UUID 可供选择。也许它不应该保存在公共数据存储中,而是保存在私有数据存储中,但为此您还需要识别每个用户。这是我很困惑的地方。

如果没有设置 UUID,则执行最后 4 步。

所以,我在第五步感到困惑,大多数人都理解那个解决方案,没有更多的解释,所以我一定是对某些东西的工作方式一无所知,也许是云服务?我认为问题在于我可能不了解 iCloud 是如何工作的,以及它是如何存储它的值的​​。我只是不明白运行应用程序的 X 的第 5 个(随机数,它可能是第 2 个或第 2000 个)设备如何知道 UUID XXX... 是用户 X 的 UUID,而不是用户的 UUID Z。

再次感谢您这么快的回答,我想也许我得等几天,而不是几分钟。原谅我的无知,我在这件事上有点菜鸟,但我想学习。被这个问题困扰了好几天

4

2 回答 2

2

您提到的答案是识别用户的正确方法。解决方案是保存称为 UUID(唯一用户 ID)的标识的值,而不是 UDID(唯一设备 ID)。

当然,对于开发人员来说,唯一的缺点是用户可以删除并再次安装应用程序并拥有不同的 ID。

于 2012-07-02T19:28:46.580 回答
2

正如丹尼尔所说,UUID 是识别用户的正确方法。我只想补充一点;你之前这么说

我看不出它对每个新用户来说都是独一无二的

好吧,根据这篇维基百科文章:

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

因此,您可以非常确定 UUID 对于每个用户都是唯一的。

此外,MAC 地址基于以太网卡的 MAC 地址、时间戳和其他一些杂项信息。根据 Superuser 上的这个问题,这增加了 UUID 的唯一性:

[MAC 地址] 相当独特。

  • 前 3 个八位字节定义制造商。
  • 最后 3 个八位字节通常在 PROM 刻录时生成。这取决于制造商如何做到这一点。

这显然为每个制造商提供了 16,777,215 个可能的唯一 MAC 地址。这是相当多的,所以制造商不应该重复使用一个。

所以基本上,UUID 为 MAC 地址增加了额外的唯一性。

总之,出于您的意图和目的,UUID 将是完美的。

希望这可以帮助!

于 2012-07-02T19:35:18.087 回答