kSecAttrSynchronizable需要iCloud Keychain吗?

时间:2015-02-11 01:58:15

标签: ios icloud keychain

我已使用kSecAttrSynchronizable在我的应用程序中使用SecKeychain API实现了同步钥匙串存储。我是否认为必须启用iCloud钥匙串(iOS设置> iCloud> iCloud钥匙串)才能正常工作?

如果是这样,有没有办法判断是否已启用?

1 个答案:

答案 0 :(得分:0)

您的应用使用kSecAttrSynchronizable属性告知钥匙串是否需要将此钥匙串条目同步到该用户的其他Apple设备。

为什么您希望某个项目同步?例如。用户不想让它同步,因为他想在他的iPhone和iPad上使用不同的密码;所以你可能想提供一个pref并让用户选择是否希望同步这个密码。或同步此密码根本没有意义,例如它是一个密码,用于加密应用程序的本地数据,本地数据只会出现在当前设备上,因此这个密码对其他设备没用,它们缺少解密数据。

但是,您的应用只能表达您的商品同步的愿望,是否完全同步取决于用户。在所有密码同步要求将密码存储在Apple的服务器上之后,用户决定他是否想要密码同步。它们是加密存储的,甚至连苹果公司都无法访问密码数据,但是有些用户在互联网上的公共服务器上放置这种信息时仍然不会感觉良好。因此,除非用户启用同步,否则不会同步密码。

为什么您需要知道用户是否已启用它?告诉用户密码是否未同步,除非他启用密码同步?听起来有点像告诉用户房间是黑暗的,除非他打开灯。如果它没有打开,用户可能是故意选择的,你不知道他是否这样做了,可以吗?如果您在应用程序首选项中提供了密码同步选项,并且用户启用了,则只需显示下面的信息文本,此功能要求启用iCloud钥匙串同步,否则将无效。

除此之外,如果您没有提供这样的选项,那么当您的应用承诺时,所有用户应该仍然非常明显,现在支持iCloud Keychain Synchronization"这个功能只有在" iCloud Keychain Synchronization"启用了,你不觉得吗?所以据我所知,没有直接告诉你的API。人们可以通过其他方式间接发现,但我不推荐这种黑客攻击,它们非常脆弱,迟早会更新。