感谢您花时间和兴趣阅读本文并希望帮助我。
我需要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保存到Cloud的公共数据存储中。(Cloud的数据存储中的UUID,Keychain和NSUserDefaults应该是相同的)
因此,如果运行5次安装,Cloud的公共数据存储应该是这样的
An Array of 5 values:
[
XXXX-EEEEE-FFFFF,
SFSDFFWE-WERW-SDFS,
XXXX-XXXXX-XXXXX,
ZZZZZ-ZZZZ-ZZZZX,
XZXZZX-ZXZXZXS-ADADS
]
5.-每次运行应用程序时都会执行所有这些操作,首先检查公共云存储中是否存储了值。这是我困惑的地方,不同的设备将如何知道哪个UUID是你的?我的意思是,有5种不同的UUIDS可供选择。也许它不应该保存在公共数据存储上,而是保存在私有数据存储上,但为此您还需要识别每个用户。这是我感到困惑的地方。
如果没有设置UUID,请执行最后4个步骤。
所以,我在第五步感到困惑,大多数人都明白这个解决方案,没有任何解释,所以我必须对某些工作的方式无知,也许是云服务?我认为问题在于,我可能不了解iCloud是如何工作的,以及它如何存储它的价值。我只是不知道运行应用程序的X的第5个(随机数,可能是第2个或第2000个)设备,将知道UUID XXX ...是用户X的UUID,而不是用户的UUID ž。
再次感谢你回答这么快,我想也许我要等几天,而不是几分钟。请原谅我的无知,我在这件事上有点像菜鸟,但我想学习。几天来一直坚持这个问题
答案 0 :(得分:2)
您提到的答案是识别用户的正确方法。解决方案是保存该标识的值,称为UUID(唯一用户ID) - 而不是UDID(唯一设备ID)。
对于您作为开发人员而言,当然唯一的缺点是用户可以再次删除并安装应用程序并拥有不同的ID。
答案 1 :(得分:2)
正如丹尼尔所说,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将是完美的。
希望这有帮助!