使用钥匙串存储设备标识符

3
我注意到我的identifierForVendor总是会改变。有人告诉我,如果从iTunes下载,它就不会改变。但我并不确定。因此,我想存储第一个生成的identifierForVendor。我在查看帖子时找到了这个类,JNKeychain。它可以存储密码和其他数据。我尝试使用它来存储我的identifierForVendor。即使删除我的应用程序并使用XCode重新安装,我仍然能够获取我存储的值。这听起来很好,因为这样,我的identifierForVendor可以持久存在,无论是否从iTunes下载。然而,我对Keychain并不是很熟悉。我甚至不知道我们可以使用它来存储安全数据。我阅读了他们的文档,它说通常用于在应用程序之间共享数据,并且您的应用程序应该具有相同的配置文件等...我不打算共享。我只想保存我的标识符,因此这不是我的问题。我唯一关心的是我的数据在keychain存储中会持续多长时间?会在某些时间后被删除吗?或者当我关闭设备时?当我更新ios版本时?它能永久存在吗?如果我使用开发/分发配置文件,keychain会有不同的行为吗?

请注意,如果您将identifierForVendor用作某种广告ID,则会被拒绝。您不应该使用或依赖此值作为用户ID:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/index.html#//apple_ref/occ/instp/UIDevice/identifierForVendor - chris stamper
@cdstamper使用它来帮助备份用户数据是否被视为使用它作为广告ID? - cessmestreet
听起来不错,但我建议实施一个登录系统。如果用户更换设备会怎样? - chris stamper
@cdstamper 我计划使用iCloud来实现这个功能。实际上,登录系统是不错的,但很多用户会忘记他们的用户名/密码并且抱怨,所以我尽可能地让事情变得简单易懂。谢谢。 - cessmestreet
1个回答

3

只要设备没有被擦除或进行硬重置,钥匙串条目就会持续存在,直到应用程序将其删除。即使应用程序被删除并替换,钥匙串条目仍将保留。如果来自开发者配置文件的应用程序与企业配置文件或应用商店重叠,则钥匙串条目应该是可以正常使用的。


谢谢!如果我突然更改了配置文件,我是否仍然能够从钥匙串中获取条目? - cessmestreet
1
只要捆绑标识符保持不变,你就是安全的。 - dogsgod
自iOS 10.3 beta5起,这已不再是真实情况。应用程序添加的钥匙串项目现在在应用程序被删除时也会被删除。请参见https://forums.developer.apple.com/message/210531#210531。 - Eirik Berntsen

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