keychain读写规则

来源: https://www.aliyun.com/jiaocheng/359007.html

默认的group 为 $(AppIdentifierPrefix).bundle identifier
其中的${AppldentifierPrefix}是开发者账户的的前缀,是apple的公司提供的,

acct,svce,group 3个属性 确定一条储存记录。

iOS Keychain 读写规则
1、未开启Keychain Sharing

写Keychain时不设置group,会写到默认的group里(app id prefix + bundle)
写Keychain时设置了group,只能设置默认的group,否则会导致Keychain写入失败。

总结:未开启Keychain Sharing时只能写入到默认的group里。
PS:未开启Keychain Sharing时,iOS10模拟器下Keychain可能无法正常使用。

2、已开启Keychain Sharing

若不添加Keychain Groups,只能写到默认的group中,无论写Keychain时是否设置了group。
若添加了Keychain Groups:

写Keychain时不设置group,会写到Keychain Groups里第一项group里。
这句话是错的。 会写到默认的group里,即默认的appidprefix.bundleidentfier。keychain groups中哪怕没有填appidprefix.bundleidentfier这一项。

写Keychain时设置了group,会写到设置的group里。但如果设置的group非法,即不在Keychain Groups中,也不是默认的group(app id prefix + bundle),则会写入失败。

读取Keychain
在设置了kSecMatchLimitOne的情况下,若曾写入过多个group,目前测试的结果显示可能与写入的先后顺序有关(没有在官方文档中找到依据,测试结果可能有偏差)

读keychain时,如果不设置group,kSecMatchLimitAll能读取到到sharing groups中所有group对应的数据。
如果设置group,能读取到指定的group。

1,给已经上线的app打开keychain sharing, groups中加入bundle identifier为名字的group。 因为原先未打开时,为设置group时,数据时存储到这个group中的。
2, 给新app打开keychain sharing, group中加入原来上线的app的bundle identifer。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容