美文网首页
keychain读写规则

keychain读写规则

作者: 我是小胡胡分胡 | 来源:发表于2018-05-30 09:45 被阅读49次

    来源: 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。

    相关文章

      网友评论

          本文标题:keychain读写规则

          本文链接:https://www.haomeiwen.com/subject/voqtsftx.html