iOS 7中的持久UDID替代方案是什么?

5
首先,我想说我完全知道uniqueIdentifier已被弃用,现在有identifierForVendoradvertisingIdentifier
我的问题是,是否有一种方式可以拥有一个完全持久的设备标识符,可以经受住任何事情的考验,比如重新启动、卸载应用等等。
目前我们使用的是identifierForVendor,这还不错——但我们产品的主要要求之一是允许快速登录而无需任何注册,当人们删除我们的应用程序时,他们的保存行为就像是“本地保存”(即使它存储在我们的服务器上),因为他们的identifierForVendor会发生变化。
希望有人能比我更好地找到答案(或者是否真的有答案:P)
谢谢

1
请在提问前先搜索。这个问题过去已经被问了很多次。http://stackoverflow.com/search?q=iOS+UDID+replacement - 答案几乎总是“使用CFUUID创建自己的UUID并将其持久化在钥匙串中”。 - Jasarien
抱歉,我搜索了但没有找到所说的解决方案。 - Ron
1
当有人升级手机并出售旧手机时,新用户突然发现他可以访问原始手机所有者的数据。这就是为什么苹果删除了轻松拥有持久UDID的能力的原因。 - Abizern
1
在提交问题之前,SO会向您显示一系列相关问题。第一个列出的问题可能已经回答了您的问题。请在提交问题之前始终检查相关问题。 - rmaddy
谢谢回复 - 下次在发问题之前我会更仔细检查的。 - Ron
1
请查看https://dev59.com/3mw05IYBdhLWcg3wYw1s。 - Popeye
1个回答

5
你可以自己创建一个 guid 并将其存储在你的app的 keychain 中,这是最好的做法。这种方法可以在卸载和重启后继续使用,但不能在系统清除后继续使用。如果用户登录到某个云服务并在你的服务器上创建一个关联,例如Game Center或Facebook,则该id通常可以跨系统清除保持稳定,并且您可以进行查找。但是,请注意不要违反这些服务的条款。

感谢@jeffamaphone的快速回复,有几个问题:
  1. 您知道使用此方法的任何应用程序吗?这样我们就可以看到流程并查看它是否符合我们的需求。
  2. 根据我在Mac上使用Keychain的经验,它会弹出一个讨厌的弹窗,要求您输入密码以将某些内容存储/读取到钥匙串中 - iOS上的钥匙串是否也是如此?
  3. 在iOS上使用钥匙串还需要一个iCloud帐户吗?
谢谢!
- Ron
  1. 我公司制作的游戏,虽然我不想透露它们的名称。
  2. 我在iPhone上没有看到这种情况发生。访问受您的配置文件签名控制,因此只有您的应用程序可以获取您的钥匙串值。我怀疑macOS没有那么严格,因为您可以运行未签名的应用程序。
  3. 据我所知,没有。这不是一个简单的概念,所以最好阅读我提供的文档。
- i_am_jorf
感谢 @jeffamaphone 的回复 - 如果您偶然发现使用此功能的任何游戏/应用程序,而不是由您的公司制作,请尽可能分享 :) 谢谢,我会研究一下! - Ron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接