【问题标题】:IOS Unique User Identifier across DevicesIOS 跨设备的唯一用户标识符
【发布时间】:2012-07-02 19:25:07
【问题描述】:

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

我需要一个唯一的 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 步。

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

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

【问题讨论】:

    标签: ios unique appcelerator uuid identifier


    【解决方案1】:

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

    对于作为开发者的你来说,唯一的缺点当然是用户可以删除并再次安装应用程序并使用不同的 ID。

    【讨论】:

      【解决方案2】:

      正如 Daniel 所说,UUID 是识别用户的正确方法。我只想补充一点;你说的

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

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

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

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

      此外,MAC 地址基于以太网卡的 MAC 地址、时间戳和其他一些其他信息。根据超级用户的this 问题,这增加了 UUID 的唯一性:

      [MAC 地址] 相当独特。

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

      这显然为每个制造商提供了 16,777,215 个可能的唯一 MAC 地址。数量很多,因此制造商不应重复使用。

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

      总之,就您的意图和目的而言,UUID 将是完美的。

      希望这会有所帮助!

      【讨论】:

      • @Sismetic - 没问题。我们都是这样开始的。
      • 感谢您的理解 :) 我喜欢 SO :P。你能帮我更好地理解这个过程吗?
      • @Sismetic - 在您的注释中,您在第 4 步中提到 5 installations are run,您的意思是在不同的设备上吗?另外,当您说Cloud 时,您的意思是 iCloud 还是您设置的某些服务器?谢谢
      • 抱歉这么久才回答,不得不做一些家务。是的,在不同的设备上,以及不同的用户上。这将是一个游戏,例如,你作为用户 Qegal 是第一个玩家,你在你的设备 A 上运行它,所以第一个安装是 Qegal-A,第二个安装是 Sismetic-A(我与另一台设备),依此类推,然后你会尝试在另一台设备上播放它,所以它会安装 Qegal-B。您的 B 设备如何知道您是 Qegal 而不是我?云是指 iCloud
      • 我正在使用 Titanium 的 Appcelerator,它实现了云服务,所以要在 Apple 的 IOS SDK 上实现一些东西,Titanium 的开发人员需要在他们的 SDK 上实现它以供我使用,或者我有找到与 Appcelerator 兼容的模块。他们将 iCloud 称为 ACS(Appcelerator Cloud Services),它实现了 Apple 的 iCloud 服务。
      猜你喜欢
      • 2014-04-05
      • 1970-01-01
      • 2013-10-07
      • 2019-04-25
      • 1970-01-01
      • 2011-11-13
      • 2013-09-19
      • 2015-03-14
      • 2022-09-29
      相关资源
      最近更新 更多