iOS开发-关于keychain存储和数据分享(keychain share)group的一些总结
是不是要demo先行啊
https://github.com/HRCoderHub/HR-Keychain demo地址,自取
iOS开发中难免会接触keychain,keychain说到底其实就是钥匙串,mac操作经常会遇到的。登录某个网站时都会提示你要不要存储密码等操作,都是对钥匙串进行操作。
iOS开发中用到keychain主要用来保存一些比较私密的且无法保存到服务器的数据。
keychain是存在于系统级别的,相对于app是一个相对独立的存储空间,app的更新迭代,删除,系统升级等,都不会影响keychain数据中的保存(系统恢复出厂设置等,恢复型操作除外),所以,keychain在开发中经常被用来存储用户的密码、证书、设备码。
密码的存储比较广泛和简单,不做陈述。由于apple不允许开发者获取设备的UDID 和 IMEI 号,而开发中经常会遇到需要标示设备的需求,所以keychain存储就显的尤为重要。我们在开发中可以获取到apple提供的UUID,这样我们就可以将这个随机生成的UUID存储到keychain中,间接达到设备码的效果。(恢复出厂设置等操作后。设备码会更新)
对keychain的操作可以类比数据库,也同样可以进行增删改查这四个操作。keychain的存储方式类似于dictionary,也是key - value形式
对于每个应用来说,keychain都有两个访问区,私有区和公共区(也就是组模式).
私有区是一个闭合的存储区域,每个应用只能操作自己的私有区,本应用存储的任何数据对其他程序不可见,其他程序也没有权限访问这个私有区。(可以理解为存在钥匙串的沙盒)。
公共区,apple提供给同一个开发者账号开发的多个app之间的一个数据共享模块。现在只局限于同一个开发者账号下的不同app之间数据共享。这个区域是独立于私有区的另外一个数据存储空间。实现多个应用间共同访问一些数据。
这里就主要介绍keychain的数据共享(私有区的数据存储在后边介绍)
公司最近新遇到一个问题,也是设备码的问题,一台设备装了两个同一开发者账号开发的app,这两个app分别生成了不同的设备码