Keychain的一个比较直接的作用就是利用 kSecAttrAccount,kSecValueData 账号/密码对来实现键/值对的存取。
只要知道 kSecAttrService 的值,即可通过 kSecAttrAccount 的值获取 kSecValueData 的值。不同应用间(无论是否同一开发商)同样适用。可以起到访问控制的作用。模拟器中是如此,真机中有待测试。
kSecAttrAccessGroup 测试无效,按照官方api说明,配置好 keychain-access-groups.plist 后并在 SecItemAdd 时指定 kSecAttrAccessGroup 为私有 group,在其他 app (bundle id前缀不同)没有设置 kSecAttrAccessGroup 中获取 仍可正常获取,并没有起到访问控制的作用。仍然只是在模拟器中测试,真机环境有待测试。
以下是苹果官方解释: